首页 > 试题广场 >

若定义:char s[20]="programming",*

[单选题]
若定义:char s[20]="programming",*ps=s
则不能表示字符‘o’的是() 。
  • ps+2
  • s[2]
  • ps[2]
  • *(ps+2)
推荐
A
A项,ps为指针,ps+2为一个地址,因此不能表示字符‘o’
B项和C项,当ps为指针时,ps[2]等价于s[2],表示的都是数组中的第3个元素。前者表示指针名称加下标引用元素,而后者表示数组名称加下标来引用元素。因此B和C正确。
D项,*(ps+2),取到了ps[2]的值,因此为‘o’。因此D正确。
编辑于 2019-12-17 14:24:21 回复(0)
A
根据题目得出:数组名s为字符数组的首地址,并且将ps指针指向数组的首地址。
  • A选项,ps+2指针向后移动2个单位指向字符'o'的地址,并不是地址中的值。所以A错误
  • B选项,s[2]采用数组下标的方式表示,从0开始的字符,刚好是'o'
  • C选项,ps[2]采用指针下标的方式表示,从0开始的字符,刚好是'o'
  • D选项,对ps+2的地址进行取存放的值,刚好是'o'
发表于 2019-12-16 17:27:56 回复(0)
答案:A
解析:ps是指向字符串数组第一个元素的指针,指针是一个地址,因此ps+2仍然是一个地址,需要使用取值运算符 * 取出地址中的值才是 'o',因此,A错D对
数组名 s 其实也是一个指向数组第一个元素的指针,因此 *ps=s 才得以合理,并由此 ps 和 s 指向了同一个元素,也就是数组的第一个元素。故 ps[2] 和 s[2] 是等价的,他们的值都是 'o',这里使用的是指针加下标得到地址中值的用法。B对C对。
发表于 2019-12-16 14:55:10 回复(0)
a压根没有*,取不了值
发表于 2020-06-26 21:17:37 回复(0)
A
A项,ps为指针,ps+2为一个地址,因此不能表示字符‘o’。
B项和C项,当ps为指针时,ps[2]等价于s[2],表示的都是数组中的第3个元素。前者表示指针名称加下标引用元素,而后者表示数组名称加下标来引用元素。因此B和C正确。
D项,*(ps+2),取到了ps[2]的值,因此为‘o’。因此D正确。
发表于 2020-06-23 10:11:25 回复(0)
[]是地址访问运算符
发表于 2022-08-19 12:51:47 回复(0)
a表示字符“0”的地址
发表于 2023-06-29 18:34:12 回复(0)
原来是取值,不是取地址
发表于 2023-04-11 10:37:41 回复(0)
指向o的地址
发表于 2023-03-23 14:26:12 回复(0)
求解
发表于 2022-09-12 11:39:02 回复(0)
A项的输出是ogramming,它是一个指针,指向o元素。
发表于 2020-04-03 20:41:03 回复(0)