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取地址就可以得到该存储空间的地址