首页 > 试题广场 >

若已定义: int a[]=[0,1,2,3,4,5,6,7

[单选题]
若已定义: int a[]=[0,1,2,3,4,5,6,7,8,9],*p=a,i; 其中0≤i≤9,则对a数组错误的引用是()
  • a[p-a]
  • *(&a[i])
  • p[i]
  • a[10]
推荐
D
数组下标范围为0~9
编辑于 2015-02-05 10:40:26 回复(0)
D      主要说一下A. A正确,因为指针是有减法的,不过只在数组之中应用,用来表示元素的个数的差. 这里 p 和 a其实是相等的,所以A答案等价与 a[0].
发表于 2015-04-13 21:12:04 回复(7)
A.a[p-a]          //数组名也是指针,指针是可以相减的,因为*p=a,所以为a[0]
B.*(&a[i])        //&a[i]取地址,然后*,取值,所以为a[i]
C.p[i]              //p[i]=a[i]
D.a[10]          //a[0]~a[9],数组越界
发表于 2021-03-07 11:09:54 回复(1)
数组名就是数组的首地址,此时p和a相等,即[p-a]就是 a[0].
*(&a[i])就是a[i]
p[i]相当于a[i]
p+i是指向数组a[i]的指针。
发表于 2017-04-01 11:49:07 回复(2)
C中的p[i]等同于p+i,它是指向数组a[i]的指针。
发表于 2015-10-04 20:16:15 回复(4)
下标访问越界,数组中最常见的问题
发表于 2017-07-31 21:04:08 回复(0)
数组下标从0开始,a[10]越界了
发表于 2022-01-21 15:34:14 回复(0)
a[p-a]=a[0],因为*p=a;*(&a[i])=a[i],因为&取地址,*取数值;p[i]=a[i],因为*p=a;a[10]越界。
发表于 2019-03-31 16:16:23 回复(0)
大家注意看 分号的位置,其实是int *p =a;
int *p=&a【0】 其实是两个语句 等价于 int *p; p=&a【0】;
对一个指针加1的结果是对该指针增加一个存储单元,对数组而言,地址会增加到下一个元素的地址。对于指针而言,p【n】的意思是*(p+n),即寻址到内存中华的ar,然后移动n个单位,再取出数值。
发表于 2017-02-12 21:58:40 回复(0)
p指针 通俗说就是下标 就是地址 就是内存地址的编号 *p就是取对应地址所对应的值 当*p=a时 p代表数组首地址
发表于 2022-04-14 12:32:41 回复(0)
<p>数组定义之后,下标是从0开始的,也就是说在此题中,a0是第一个元素,a9是最后一个元素,D答案a10明显已经越界了</p>
发表于 2020-12-14 22:39:11 回复(0)

指针有加减法

发表于 2018-07-31 07:57:39 回复(0)
数组下标访问越界……
发表于 2023-04-28 22:58:16 回复(0)
数组越界,下标最大为9
发表于 2018-04-30 15:47:49 回复(0)
谁给解释下答案c
发表于 2015-09-28 20:49:08 回复(2)
数组名也是指针
发表于 2023-03-24 16:52:57 回复(0)
*(&a[i])就是a[i] p[i]相当于a[i] p+i是指向数组a[i]的指针。
发表于 2023-01-09 14:53:20 回复(0)
a[10]范围外a[0]到a[9],D选项越界
发表于 2022-03-08 07:50:56 回复(0)
数组名也是指针.
发表于 2022-02-22 02:54:48 回复(0)
定义数组可以用a[10],引用不行。。
发表于 2021-12-14 01:35:59 回复(0)
很明显D选项数据下标越界!
发表于 2018-11-27 01:15:20 回复(0)