读书人

void ((function))(int (*a)) 函数参数

发布时间: 2013-07-01 12:33:04 作者: rapoo

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 中有一句话,声明与使用变量的方法是相同的

读书人网 >C语言

热点推荐