|
发表于 2015-4-15 21:50:26
|
显示全部楼层
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;
- }
复制代码
|
|