1.这个问题是属于函数参数传递的问题,而不是函数指针,函数指针是 void (*p)() 这里的p变量的问题,
2.回答前提有很多种,假设以知道指针为前提,你给的是指针上的值的问题,假设你不知道指针为前提,你传达的是一份被复制的值
3.假设你知道指针:假设你传的是指针的值,那么会复制指针的值,&a,那么你使用被拷贝好的值的指向内存空间的值 *a,这里的 a == &a (这里是引用 a 指向的内存,并不是 a 本身)
4.假设你不知道指针:假设你传的是本身的值,那么会复制背身的值,a,那么你使用的是另外一份变量,b.这里 a == b (这里引用 b 本身) 附上一个比较有趣的程序来说明.个人很喜欢这个小程序#include <stdio.h>
void Vid(int Q,int p)
{
printf("%d,%d",Q,p);
}
void D(void (* p)())
{
p(122,p);
}
int main()
{
int d;
printf("%d\n",Vid);
//输入 Vid 的值给 d ,你会发现同样可以执行并且调用到 Vid 函数
scanf("%d",&d);
D((void (* )())d);
return 0;
}
|