指针指向问题

char s[10]=“computer”,*ps=s;
1.ps+2 2.ps[2] 3.s[2] 4.ps+=2,*ps
不能代表字符m的表达式是什么,理由是什么

A: ps是一个字符指针,指向了数组的首地址,就是第一个字符'c'
那么ps+2就是指向了第3个字符‘m',但是ps+2只是指针(地址) 要代表m必须取他指向地址中的值 所以应该 *(ps+2)就对了。
B ps等价于s 所以s[2]和ps[2] 效果一样
D 就是A所讲的正确的那个。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-12
1为m的地址 ps为char型的指针,指针指向数组的首地址,移动2个就代表m
2为m ps[2]就是把ps当做数组来用了
3为m s[2]就是表示数组的第二个元素就是m
4的意思就是ps的地址+2然后*ps就是表示m

所以选A,A只是表示m的地址应该改为*(ps+2)
第2个回答  2012-04-12
*ps=s;ps是一个字符指针,指向了数组的首地址。
A: ps+2的意思是:首地址+2*(一个字符所占的位数),所以:ps+2指的是字母m的地址
B:ps[2]与*(ps+2)等价,所以ps[2]代表的是m;
C:这个就不用解释了,数组下标从零开始;
D:ps=ps+2,然后*ps代表的就是m
所以最终的答案是A
第3个回答  2012-04-12
答案是 A
ps+2的意思是个地址 因为ps指向了s的首地址 A表示的是一个地址 而不是指向的内容
而ps[2] s[2]都是表示第三个元素
后面ps=ps+2 ,*ps就表示指向的内容了 所以也是指向了第三个元素
相似回答