c语言问题

[复制链接]
查看11 | 回复4 | 2009-2-4 14:12:16 | 显示全部楼层 |阅读模式
若有以下定义:
char s[20]="programming",*ps=s;
则不能代表字符o的表达式是
A.ps+2
B.s[2]
C.ps[2]
D.ps+=2,*ps
ps不是地址吗,+2不是向后移动2位吗

回复

使用道具 举报

千问 | 2009-2-4 14:12:16 | 显示全部楼层
对,因此ps此时为s[2]的地址,它是一个地址 而不是字符o, 要取得字符o 必须对地址 ‘解引用’ 也就是 *(ps+2)*(ps+2)才是正确的...
回复

使用道具 举报

千问 | 2009-2-4 14:12:16 | 显示全部楼层
ps是数组的首地址 即字符串中字母p的地址 +2的确是地址向后移动2位!由于数组按顺序存储方式 所以加2之后就是字母o所在的地址答案选A...
回复

使用道具 举报

千问 | 2009-2-4 14:12:16 | 显示全部楼层
A.ps是地址,+2也是向后移动2位,但是那还是地址,指向o的地址,还不能完全说是代表字符o,应该是 *(ps+2)...
回复

使用道具 举报

千问 | 2009-2-4 14:12:16 | 显示全部楼层
选Aps+2是一个指针,只是指向字符o 不代表o*(ps+2)才代表字符o...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行