C语言 int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 0<=i<=9,对a数组元素引用不正确的是:

A) a[p-a] B)*(&a[i]) C) p[i] D) *(*(a+i)) 答案为D
B 是不是a[i]??
C p[i] 是不是相当于&a[i],这不是在获取元素a[i]的地址吗? 为什么C也正确??
A 中为什么能用用p减a??a[p-a]什么意思??
D 是不是相当于*a[i], 因而不正确??
请高手逐个解答,谢谢!!!

B 是不是a[i]?? //是a[i]

C p[i] 是相当于a[i],这不是在获取元素a[i]的地址吗? 为什么C也正确??// p[i] 是相当于a[i]

A 中为什么能用用p减a??a[p-a]什么意思?? //p的值就是a,所以p-a的值为0,相当于a[0]
D 是不是相当于*a[i], 因而不正确?? //是的*(a+i)就是a[i],那么再*a[i]就错了追问

“获取元素a[i]的地址”也是引用a数组元素吗????

追答

准确的讲,不算。不过,做选择题,不要钻字眼,选相对较好或较差的一个就行了,排除法很管用

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-13
首选 (a+i)就是个地址 一个* 代表 这个地址的数据 也就是数组第 i 个数字
再加个* 就没有意义了。。

C语言 int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 0<=i<=9,对a数组元素...
C p[i] 是相当于a[i],这不是在获取元素a[i]的地址吗? 为什么C也正确??\/\/ p[i] 是相当于a[i]A 中为什么能用用p减a??a[p-a]什么意思?? \/\/p的值就是a,所以p-a的值为0,相当于a[0]D 是不是相当于*a[i], 因而不正确?? \/\/是的*(a+i)就是a[i],那么再*a...

...= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1; *p=a[0]; *(p++)是...
(p++) = 1;就是将1写入当前p指向的空间,之后对指针p执行累加。假如刚开始p指向数组的第0元素,那么这条语句就是将1写入数组的第0元素,之后将指针p指向数组的第1元素。

...int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a, i; 其中 0≤i≤9, 则对a...
正确的是 A) a[i];B) &a[i] 这个是个地址 C) p[i-1] 这个可能会越界 i=0时 p[-1]越界 D) a[10] 越界

C语言 int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a *p=a 什么意思??是不是...
int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a:p是等效于a的整数指针,你应该这样读int *p =a;(*号跟着变量走)定义了一个指针等于a数组首地址。

我这有C语言的题,哪位大侠能解决一下,必有重谢!
C:0D:2 A B C D 4、语句printf(“%d\\n”,strlen(“xyz\\t\\xab\\3\\\\”));的输出结果是( )。本题(1分)A:9B:11C:7D:8 A B C D 5、假设所有变量均为整型,则执行运算x=(a=2,b=5,b++,a+b)后, x的值是( )。本题(1分)A:7B:8C:6D:2 A B C D 6、若二维数组定义为a[m][...

C语言数组中删除给定下标的元素,哪里不对?该怎么改?谢了!!
C语言数组 不能直接删除元素,只能清零 int mdele(int *p,int n,int j);int main(){

请教C语言问题,inta[9]={1,2,3,4,5,6,7,8,9}; int *p,*q?
这是一段C语言代码,它初始化一个int数组a,并定义了两个指针p和q,分别指向数组a的第0个元素和第8个元素。随后,在for循环中,比较了数组a中的三对相邻元素:(a[0],a[8]),(a[1],a[7])和(a[2],a[6])。如果两个元素相等,则将它们的乘积赋值给变量x。因此,循环第一次执行时...

???C语言问题int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;不能表示a数组元 ...
定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]...a[n-1],由此可见答案B中a[10]已经超过规定的范围,故不能表示数组a中的元素。答案A中因为指针P指向数组首地址,所以*p相当于a[0]这个元素

...int a[3][3]={1,2,3,4,5,6,7,8,9},*p; void main() { p=(int*)m...
首先是 a的初始化 a的值为 a[0][0]~a[0][2] 1 2 3 a[1][0]~a[1][2] 4 5 6 a[2][0]~a[2][2] 7 8 9 void main(){ p=(int*)malloc(sizeof(int));\/\/ 分配一块内存,其地址赋值给p(全局变量)f(p,a);\/\/调用函数 printf("%d\\n",*p);\/\/ ...

C语言若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数组不为3的表达...
答案是C..我解释是这样,供你参考:B解释,x为数组首地址,+3就是向后移动三个地址,指针指向数值3的位置,将地址赋给指针变量P1,因为运算符++比*高一级,所以先执行P1++,但是看清楚,这里的P1的地址值没变,接着执行*运算符,取值就为3... 你的问题在于:P++在此次运算并不会加1,只能在...

相似回答