读书人

c和amp;c的有关问题

发布时间: 2012-03-07 09:13:51 作者: rapoo

c和&c的问题
有定义语句:int b;char c[10]; ,则正确的输入语句是
A)scanf( "%d%s ",&b,&c);
B)scanf( "%d%s ",&b,c);

老谭的书上写了A答案是错误的,但是用VC,TC等编译工具运行都没有错误,而且结果都一样,c和&c是一个地址。

为什么?


[解决办法]
你可以认为“c”跟“char* p”是同一个级别的,而“&c”跟“char (*p)[10]”是同一个级别的。
是啊,同一个地址对scanf来说效果就没啥区别。
[解决办法]
对于char a[10]这样的数组类型
虽然a可以当作指针来用,表示该数组的首地址
但实际上并没有一个存储区域来保存这一地址
所以对a取地址得到的还是数组的首地址
而char* p = a;就实实在在的分配了一段存储空间来保存地址
所以对p取地址就可以得到该存储空间的地址

读书人网 >C语言

热点推荐