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

定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的为啥是 A)p=s; B)p=k; C)p=s[0]; D)k=s
newscoms 1年前 已收到1个回答 举报

ncsglk 幼苗

共回答了20个问题采纳率:95% 举报

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

1年前 追问

8

newscoms 举报

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

举报 ncsglk

对,那样正确。

newscoms 举报

为什么呢?谢谢

举报 ncsglk

(*k)[10]意思就是k是指向元是10个字符型的数组。而s[3][10]的内存存储形式就是s是指向3个元素的数组,且此处的元是10个字符型的,不知道我说清楚了没有?呵呵
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.039 s. - webmaster@yulucn.com