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

B为什么不对? D为什么对 ? 求大神详解
看错答案 了。c是对的 。 那B是为甚么错了?

参考答案:我是这样认为的:*是指针运算符。我们曾可以这样去定义:int a[10],*p,**s;

如果在下面的语句中出现了*p=a;

这就意味着指针p已经指向数组的首地址,也就是a[0],

此时我们可认为指针p是一级指针.

如果在下面的语句中出现了*s=p,

这就意味着指针s指向了p的单元,而p指向了a[0]

此时s离数组的首地址形象的像隔了2级

因此称s为2级指针.

对于2级指针,有**s=*(*s)=*p=&a[0]追问

b 是为什么错的?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-25
b错,是因为把指针赋给指针了
相似回答