一:函数指针调用函数
一个函数,在编译的时候,系统会给函数分配一个入口地址,这个入口地址称为函数的指针(地址)
既然有地址,我们可以声明一个指针变量指向该函数,就可以通过指针变量调用函数了
int c,d;
c = max(15, 9);
int(*p)(int, int);//定义一个函数指针变量
p = max;//将函数max入口地址给指针变量p,函数名代表函数入口地址。&max与max地址是等价的
d = p(15, 9);//调用*p就是调用函数max,p指向函数max的入口,这里(*p)与p等价,*可以省略
//p不能自加操作,*(p+1)不合法
printf("c=%d\n",c);
printf("d=%d\n", d);
getchar();
总结
函数指针定义一般形式:
数据类型标识符 (*函数指针名)(形参列表)
指向函数的指针变量,p++,p--都没有意义
二,指向函数的指针做函数参数
int c;
c = wwmax(15, 9, max);
printf("c=%d\n", c);
getchar();
三,返回指针的函数
函数返回的指针类型的数据,也就是返回地址
定义形式:
数据类型 *函数名(参数列表)
int *a(int x,int y)
四,指针数组
char *pName[]={"c++","java","python","go"};
int is1 = sizeof(pName);
int isize = is1 / sizeof(pName[0]);
char *p2 = "java";
int i;
printf("is1=%d \n isize=%d\n",is1,isize);
for (i = 0; i < isize; i++)
{
printf("pName[%d]=%s\n", i, pName[i]);
}
getchar();
五、指向指针的指针
char **p; //定义一个指向 字符指针变量 的指针
int **p; //定义一个指向 整形指针变量 的指针