定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的为啥是 C?A)p=s; B)p=k; C)p=s[0]; D)k=s

详细解释解释啊

对于答案是C的原因:
s是字符类型的二维数组、k是指向字符类型数组的指针(是数组指针)、p是字符类型的指针。
所以,看答案可以知
A)错:因为s为数组,而p是字符指针。类型不对应。
B)错,原因同A)
D)错,s实际是char类型的二维数组的头地址。而k是指向char类型的一维数组的指针。
具体看c++指针部分。追问

如果把题干中(*k)[3] 改为(*k)[10],D项对吗???

追答

对,那样正确。

追问

为什么呢?谢谢

追答

(*k)[10]意思就是k是指向元是10个字符型的数组。而s[3][10]的内存存储形式就是s是指向3个元素的数组,且此处的元是10个字符型的,不知道我说清楚了没有?呵呵

温馨提示:答案为网友推荐,仅供参考
相似回答