c语言 数组 为什么这题答案是9? p[5]是什么意思?

如题所述

第1个回答  2015-11-21
这个的实现类似于对于函数的欺骗。比如,你传给函数一个二维数组的指针(强制转换),但是函数定义的是一维数组的指针,这样你可以把这个二维数组当一维数组使用。
这里也差不多,你传给了函数第4个元素的地址,但是函数把它当做一个数组指针处理,于是相当于这个第4个元素的地址是一个数组的首地址(函数当它是,这是一种”欺骗“),然后你在取它的第6个元素,因此在第4个元素的地址上向后数5个即是该元素。
从编译器角度,p[5]被翻译成*(p+5),因为p是a的第4个元素的地址,(p+5)是a的第9个元素的地址,所以现在p[5]是a的第9个元素。
以上。追问

谢谢

这题涉及到指针吗?指针还没学到,您认为这题出现在数组这一章会不会有些不合适?

本回答被提问者采纳
第2个回答  2015-11-21
不懂 有人解答了麻烦@我一下

c语言 数组 为什么这题答案是9? p[5]是什么意思?
从编译器角度,p[5]被翻译成*(p+5),因为p是a的第4个元素的地址,(p+5)是a的第9个元素的地址,所以现在p[5]是a的第9个元素。以上。

C语言的问题,以下函数中(*p)[5]是什么意思,为什么写成*p就是错误的...
(*p)[5]是数组指针,表示定义指针p是一个指向有5个元素数组的指针

C语言, a就是数组的首地址啊,那a++不也是地址吗? 还有,p[5]表示...
p[5] 在声明里表示 声明 p 是数组,它有5 个元素。例如: int p[5];p[5] 在语句里表示 下标变量,它是数组p里的第6个元素。 因下标 从 0 起始。 例如:p[5]=666;语句里 有等式: p[5] == *(p+5); -- 下标变量 与指针关系。

c语言中定义数组数花括号内[0]:9这样什么意思
c语言中定义数组数花括号内[0]:9这样是程序崩溃了的意思。数字越大分配的内存空间越大,如果写的数字过大可能会导致程序崩溃(比如999999999这种),内存占用太大也可能导致卡顿,所以应当用多少拿多少。如果不知道用多少可以用vector数组,vector数组是根据数据的大小自动分配而且可以自动分配新的内存,不需...

C语言的小问题,(*p)[5]和*p[5],有什么区别,p都代表什么?谢谢
表示 p 是 一个 指针,用于 指向 有5个元素的 int 型 数组。--- p[5] -- 方括号优先,p[5] 是 数组, *p[5] 则是指针数组。表示 p 是 五个 指针。int *p[5]; 表示 p 是 指针数组,可以存放 5 个指针。它们5个,各自 可以 指向 各自的 int 目标。

为什么这道C语言的关于字符数组的题我做错了?高手帮忙看下~~_百度...
\/\/第一,“n位置的开始处”这个说法很不准确,我的理解是:如果n位置是字符'X',那么插入字符后为:Xbbbb(设"bbbb"为插入的字符)\/\/按照你介绍,加上空格这个字符,'o'前面的位置应该是9 \/\/第二,你的字符串太小了,如果str1里的字符为12个,str2里的字符10个,这样插入的话很容易就溢出 \/...

C语言中int *p[5]与 int (*p)[5]的区别
一、作用不同:优先级的问题,[]的优先级高于*,这就是为什么后者加了一个(),int *p[5]定义一个指针数组p,讲到底这个p是一个数组,数组内的元素是5个指针,而数组内的每一个指针指向一个int型的变量;int (*p)[5]定义了一个指向5个元素的一维数组的指针。二、含义不同:第二个就是这个...

c语言中(*p)[5]与*P[5]有什么区别?各代表什么意思 (*p)[5]中(*P)指...
int *p[5] 是一个数组 数组中存储的元素是 一个指针 比如int a,b,c;p[1]=&a;\/\/&是取地址的意思 &a就是取a的地址p[4]=&c;... 追问 a[1][2] 可以是 (*p)[2]这个怎么理解啊 大哥? 追答 int (*p)[5];int a[10][5];p=&a[1]; \/\/ 现在(*p)就等于a[1] 所以 a[1][2]可以...

C语言数组指针问题?
首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是c语言的精髓。比如你定义了int p,a[10];并且让p=a;,这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的...

C语言:int (*p)[5]是不是与 int * p相同
不同的,一个是指向有5个元素的整型数组的指针。int (*p)[5],你用p++会发现,p指向的位置向后,移了4*5=20 个字节。跳过的是5个int那么长的长度。后面那个是指向整型的指针,int * p, p++,以后向后移了4个字节,跳过的是4个字节,刚好是一个整型。

相似回答