一、指针函数
int*f(inta,int b ); //返回值为int *,指针类型的返回值
上述函数声明也可以写为:
int*f(inta,int b );
将指针标志*紧贴int,远离函数名称f,会变得容易理解。 f是函数名称,返回类型是int类型的指针。
指针函数是指向调用方返回地址。
示例1 :
//001.c
#包含
int*f(inta,int b ); //声明指针函数
int main () )
{
printf------------startn ';
int *p1=NULL;
打印机(thememeoryaddressofp1=0x % xn (,P1 );
P1=f (1,2 );
打印机(thememeoryaddressofp1=0x % xn (,P1 );
printf((*p1=%d(n ),*P1 );
printf------------endn ';
getchar (;
返回0;
}
int*f(inta,int b ) ) )。
{
int*p=(int* ) malloc ) sizeof (int );
printf (thememeoryaddressofp=0x % xn ',p );
短信(p,0,sizeof ) int );
*p=a b;
printf((*p=%d(n ),*p );
返回p;
}
指针函数f返回的类型是指针类型,指针函数f的返回值p和f被指派给的指针p1的地址相同
二.函数指针
函数指针是指针,但指针是指函数,而不是常规的基本数据类型或类对象。
int(*f ) ) int a,int b ); //声明函数指针
//该函数指针f是指定返回值为整数、有两个参数、两个参数的类型为整数的函数
函数指针和指针函数的最大区别在于函数指针的函数名称是指针。 也就是说,指针类型的标志类型“*”在函数名称之前。
当然,函数指针的返回值也可以是指针。
示例2 :
//002.c
//求出两个整数的大值和小值
#包含
intmax(inta,int b ) {
return a b? a : b;
}
intmin(inta,int b ) {
return a b? a : b;
}
int(*f ) ) int,int ); //声明一个函数指针,其返回类型为int,两个参数类型为int的函数
int main () )
{
printf------------startn ';
f=max; //函数指针f是指求出较大值的函数max
intc=((f ) ) ) 1,2 );
printf(themaxvalueis%d(n (,c );
f=min; //函数指针f是指求出最小值的函数min
c=((f ) ) 1,2 );
printf(theminvalueis%d(n (,c );
printf------------endn ';
getchar (;
返回0;
}