函数指针的小应用
有两个整数a和b,由用户输人1,2或3。如输入1,程序就给出a和b中大者,输人2,就给出a和b中小者,输人3,则求a与b之和
首先封装三个取值函数
定义一个函数指针,通过switch语句选择1,2,3指向不同的函数(类型相同)。
回调函数的封装
此过程中,主函数传的是函数的地址,需要解引用拿到函数本身再进行调用。
指针数组
数组指针 是一个指针int (*p)[4];这是一个指向一位数组的指针变量
而指针数组是一个数组,里面存放的都是指针
注意区分int * p[4];每一项都是一个指针变量
函数指针数组
指针函数 返回指针值的函数叫指针函数
例:int* getsss(int a, int (*p)[3])
{
int *p; p =......
return p;
}这个函数的返回值类型为指针类型
二级指针
int data = 10;
int *p;
p = &a;
int *p1;
p1 = &p;
这种情况*p1不能取到data的值,只能取到p的值,也就是只能取到data的地址。
要想取到data引入二级指针
int **p2;
p2 = &p;
*p2 = p;(data的地址)
**p2 = data;
二维指针的应用
当你通过函数调用来修改调用函数指针指向的时候,就像通过函数调用修改某变量的值的时候一样
此时传的是指针变量的地址
传 &ppos,我们要在 getPosPerson 函数里,给 main 里的 ppos 指针赋值,让它指向指定学生的成绩数组
此时拿到的是 ppos 变量的地址,通过解引用 *ppos,就能直接修改 main 里原指针的值
pstu是行指针,pstu+pos 指向第 pos 行的首地址
注意:二级指针和二维数组别相当然想成一样的,那不对!!!