一级指针传参
int*p
char*p
void*p
...
二级指针传参
char**p int**....
可以1.二级2.一级指针变量的地址或者一级指针的数组
pa是一级也可以取*pa(二级)
int*a[10]={0}
也可以穿arr也是二级
函数指针
(指向函数的指针 存放函数地址的指针)
&Add就能取到函数Add的地址
如果直接printfAdd不用&Add结果一样
数组名!=&数组名
但是函数名==&函数名
int(*pf)(int,int)=&Add
这样pf就是一个函数指针变量
例如
void(*pt)(char*)=&test
调用:
则pf等价于Add
int ret=Add(3,5) //最原始的调用方法
结果也是8
不管几颗*都是8 实际上*只是为了好理解 没有实际意义
这三种方式完全一样等价
int ret =*pf(3,5)不行
优先级问题实际先计算pf(3,5)=8 最后*8取8的地址了