C语言一道判断题~谢谢啊~ 4

若有定义inta[10],b[4][5],*p;则因为一维数组和二维数组名都代表数组的首地址,所以p=a和p=b都是正确的赋值语句 这句话对吗?如果不对那么是哪里错了呢?麻烦解答下~谢谢啊~

不对
p = b;这句话是错的
p是一维数组的指针,而b为二维数组。

呵呵,考试的时候这样回答是正确的,其实我告诉你这样写在编程中也无可厚非。因为 a,b都是一个连续内存的首地址,如果这样用的话,强制类型转化是需要的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-16
当然不对了..
p = a ;//对
p = b ;//错
p是存储一个int型数组的首地址
b是存储一个int型数组的地址数组的 首地址
p =b[0]; // 正确
第2个回答  2009-01-16
编译不报错就是正确的

TC下面,p=b;是正确的
第3个回答  2009-01-16
p = b 有点问题。类型不匹配吧。
相似回答