C语言选择题 这种题应该怎么判断 希望大家教教我?

若有以下定义: char s〔20〕="prongraming",*ps=s ;
则不能代表字符'r'的表达式是( )

A s〔1〕 B *++p
C ps〔1〕 D ps+1

A. s[1]存放'r',没问题
B. *++ps,相当于ps++; *ps,ps原先指向s[0],经过ps加1后指向s[1],*ps即取出值'r',没问题
C. ps[1],由于ps指向s[0],因此ps[1]就是s[1],存放'r',没问题
D. ps+1,由于ps是指针类型,即char *类型,其加1后也是char *类型,这个是指针类型,存放的是一个字符单元的地址,因此它肯定不是字符类型的数据'r'
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-06
B选项应该是*++ps吧。选D。
A是数组,好理解。
C和A是一个意思ps=s
B是指向数据首位地址的ps,+1后就指向第二位了,再取值就是r了
第2个回答  2019-12-06
选D吧,PS是个指针,+1之后还是指针,如果D选项是*(ps+1)就对了
第3个回答  2019-12-06
不能代表字符'r'的表达式是( D ps+1 )
因为 ps+1 是一个 字符 的地址。
第4个回答  2019-12-06

楼主  

B *++ps     吧?

程序 和 结果

答案应该是   D

看图  

相似回答