求教,函数指针变量,同为void,为什么不能void (*)(int *prea, int *preb)" 类型的值分配到 "void (*
#include <stdio.h>void swap(int *prea,int *preb)
{
int temp;
temp = *prea;
*prea = *preb;
*preb = temp;
return;
}
void main(void)
{
int a=5,b=6;
void (*p)(); //p是定义指针函数
p = swap;
printf("交换前a=%d,交换后b=%d",a,b);
p(&a,&b);
printf("交换后a=%d,交换后b=%d",a,b);
}
很奇怪的是,一开始我用的是vs2010,怎么也运行不成功,一直显示这两个错误:
1 IntelliSense: 不能将 "void (*)(int *prea, int *preb)" 类型的值分配到 "void (*)()" 类型的实体 c:\users\lyl\desktop\text\text7\text7\text7\text7.c 19 4 text7
2 IntelliSense: 函数调用中的参数太多 c:\users\lyl\desktop\text\text7\text7\text7\text7.c 21 4 text7
我用c-free也编译不过。
但是我没用指针函数了以后,用了一个普通的swap调用,直接就可以运行了。在接下来,我又把代码改了回去,我按ctrl+f5,它就直接能运行了,我用ctrl+f7编译,还是显示两个错误。编译不通过,但是能直接运行。
由于刚用vs,实在很多地方不是很理解,请各位大神不吝啬赐教,万分感谢。