void ((function))(int (*a)) 函数参数部类是什么
void ((function))(int (*a)) 函数参数类型是什么?void ((function))(int (*a)){printf(%d, a)//这样写
void ((function))(int (*a)) 函数参数类型是什么?
void
((function))(int (*a))
{
printf("%d", a);//这样写正确,printf("%d", *a);这样崩溃
}
int main(int argc, char *argv[])
{
function(123);
return 0;
}
这是为什么?
[解决办法]这个函数其实就是。。
void function(int *a);
你传进来的是一个整型123。。所以你printf a,输出的是123当然没问题。。而如果printf *a。。输出的是内存0x123处的内容。。非法访问。。所以挂掉。。
[解决办法]传了个非法地址进去,访问了非法地址的值,所以崩了
[解决办法]参数类型是int*,由于*a本身就是declarator,*和a组合为一个指针声明符,所以把*a用括号括起来与没有一样。用*a崩溃不是由于这个原因,是其它原因引起的。
[解决办法]int *a 还是 int* a 一直是个有争议的话题,个人偏爱int *a, 对a解引用得到一个 int, 即 a 是一个指向 int 的指针
记得 c 中有一句话,声明与使用变量的方法是相同的