为什么.数组元素a与a+i的表示等价

2020-11-26 08:33:33 字数 4868 阅读 1774

1楼:匿名用户

a是存储的是数组首地址,*a指向的就是数组第一个元素a[0],所以*(a+i)的地址和a[i]的地址一样。数组和指针在一定程度上本质是一样的。

2楼:

只有a是二维数组时,a[i]与a+i才等价,他们都表示第i行的首地址,且类型相同。当a为一维数组时,他们并不等价。

3楼:司燕舞景鑫

不等价吧

*(a+i)与a[i]等价

因为可以理解数组是特殊的地址常量

a代表a[0]的地址

a+1就是地址+1

是a[1]……

为什么.一个数组元素a[i]与a+i的表示等价?谢谢啦

4楼:觉悟壮志

不等价吧

*(a+i)与a[i]等价

因为可以理解数组是特殊的地址常量

a代表a[0]的地址

a+1就是地址+1

是a[1]……

5楼:储熠祖波

a是存储的是数组首地址,*a指向的就是数组第一个元素a[0],所以*(a+i)的地址和a[i]的地址一样。数组和指针在一定程度上本质是一样的。

6楼:匿名用户

a表示的数组首地址,指针和数组在一定程度上是一样的。所以a[i]和*(a+i)指向的元素是一样的。

a[i]表示给定了数组首地址的存储位置a 寻找数组中的第i+1个元素(数组第一个元素是a[0]),而*(a+i)就直接让指针指向数组第i+1个元素。

7楼:静文风

因为a即代表a[0]是数组的首地址,所以a[i]等价于a[0]+i,即a+i

c语言书上说a(i)和*(a+i)等价,我觉得不对啊

8楼:金色潜鸟

注意方括号和小括号。一维二维不要混淆。

c语言 语句中,方括号 不是标点符号,而是 运算符.

c语言 语句中,有恒等式: a[i] = *(a+i)a[i][j] 等于 (a[i])[j] 套恒等式公式,化成 ( *(a+i) )[j], 再化成 * (*(a+i) + j);

类似地 a[j][i] 等于 (a[j])[i],套恒等式公式,化成 ( *(a+j) )[i] ,再化成 * (*(a+j) + i);

求地址 用 & 运算:

1 维:& (a[i]) = & ( *(a+i) ); 注意 &* 抵消, 得 &a[i] = (a+i )

2维; &(a[i][j]) = (*(a+i) + j);

2维; &(a[j][i]) = (*(a+j) + i);

******************************=2 维:

a(i)等价于&a(i)(0) --- 不是小括号,是方括号,用于2 维 下标变量时的 a[i] 等价于 &a[i][0]a[i] 是第 i 行 的 首地址,等价于 &a[i][0]

9楼:運命に抗

书上是对的,你的理解完全错了。

a[i]并不等价于&a[i][0]。

&a[0]等价于a;

&a[i]等价于a+i

同时取值

*(&a[i])等价于*(a+1);

其中*(&a[i])的*&抵消就是你书上说的 a[i]等价于*(a+1);

数组等价是什么意思

10楼:你猜我猜哇擦猜

在 c 语言中对数组和指针的困惑多数都来自这句话。说数组和指针 ``等价" 不表示它们相同, 甚至也不能互换。它的意思是说数组和指针的算法定义可以用指针方便的访问数组或者模拟数组。

特别地, 等价的基础来自这个关键定义:

一个 t 的数组类型的左值如果出现在表达式中会蜕变为一个指向数组第一个成员的指针(除了三种例外情况); 结果指针的类型是 t 的指针。

这就是说, 一旦数组出现在表达式中, 编译器会隐式地生成一个指向数组第一个成员地指针, 就像程序员写出了 &a[0] 一样。例外的情况是, 数组为 sizeof 或 & 操作符的操作数, 或者为字符数组的字符串初始值。

作为这个这个定义的后果, 编译器并那么不严格区分数组下标操作符和指针。在形如 a[i] 的表达式中, 根据上边的规则, 数组蜕化为指针然后按照指针变量的方式如 p[i] 那样寻址, 如问题 6.2 所述, 尽管最终的内存访问并不一样。

如果你把数组地址赋给指针:

p = a;

那么 p[3] 和 a[3] 将会访问同样的成员。

一维数组中,&a[i]的意思是?a与&a[i]的关系是?求解..........

11楼:金色潜鸟

&a[i] 是

a数组第 i个元素的地址

。a 是 a数组 的首地址,就是 &a[0] 的地址。

a与&a[i]的关系是 &a[i] = a + sizeof(int) * i

因为是 int 型,相邻元素地址差 sizefo(int).

12楼:匿名用户

&a[i]是第i个元素的地址..a表示数组首元素的地址.这个程序是把每个元素的地址打印出来,并且打印数组首元素的地址

13楼:匿名用户

&a[i]是a[i]的地址

a是数组名,也是数组的起始地址

14楼:旗语彤潘漫

a+i=*(a+i)=a[i]=&a[i]&a[i]

和a+i是获取i行数组的首地址

a[i]

和*(a+i)是访问第i行的数组

望采纳!!

c语言中a表示一个数组,a[i++]与a[++i]到底有什么区别?

15楼:l语言之父

a[i++]和a[++i]的区别:

相同点:i都加1,都使i的值变成下一个元素的序号。

异同点:a[i++]中i++是后自增,必须先使用当前元素的值再使用下一个元素的值,a[++i]中++i是前自增,可以直接使用下一个元素的值。

例子:# include

int main ()

;int i = 0;

printf("%d\n",a[i++]);//本输出的值为1,因为是i++,所以是先使用a[0]的值,再加上1,即先输出a[0]的值。

i = 0;

printf("%d\n",a[++i]);//本输出的值为2,因为++i,所以直接使i加1,即输出a[1]的值。

return 0;}

16楼:匿名用户

举个例子给是说吧

intnarray[4]=;

inti=0;

inta=narray[i++];

i=0;

intb=narray[++i];

//上面这个例子中,最后a=7,b=4,//i++是使用i的值,然后使用完以后再自增1//++i是先把i自增1,然后再使用i的值//所以a=narray[i++];就相当于a=narray[i];i=i+1;

//b=narray[++i];就相当于i=i+1;b=narray[i];

//这么说你应该明白了吧

17楼:倒霉熊

a[i++] 相当于 a[i] i=i+1a[++i] 相当于 i=i+1 a[i]也就是说 一个先

使用i的值,然后改变i的值,一个先改变i的值,然后使用i的值。

例如 如果一开始 i=3 则 a[i++] 就是 a[3] 而 a[++i]就是a[4]

*(a+i)与a[i]是一样的地址,为什么?

18楼:匿名用户

这么说吧,*(a+i)与这个地址存的参数等效,*的意思是根据指针这个地址调出这个地址上的值。那么,说是地址也没有错,只能说不是很严谨。

19楼:匿名用户

你内个说法有点错误

c++二维数组指针中

a+i 表示数组a的第i行第0列元素的地址*(a+i)表示数组a的第i行第0列元素的值估计你内个是书上印错了,教科书各种错,例题**也各种错,你得自己根据定义去理解,它只是说个大概意思

20楼:匿名用户

不是的,给*p赋值,并不是直接赋给它数值,而是赋给他一个地址,比如说:*p=&i,那么就给*p赋给了i的内存地址,系统在读取到内存地址之后再读出该内存所存的数值,而*p的内存地址等于i的内存地址,所以*p的数值与i的数值是一样的,虽然 在赋值语句之后,*p等价于i, 但是不能说直接把数值赋了*p。*p=&i的含义是变量i的地址作为一个数据存放在指针变量p所对应的内存单元中。

有二位数组a[n][m] 对于指针问题 *(*(a+i)+j) 与 a[i][j] 为什么等价 (

21楼:

a[i][j]是第i行(0算起)第j列(0算起)的元素值。a+i是第i行的行指针,那么*(a+i)就是第i行第0个元素的指针,自然*(a+i)+j就是第i行的第j个元素的指针了,最后通过这个指针用*取出来的值*(*(a+i)+j)不就是第i行第j列的值吗?这当然就和a[i][j]完全是一回事了……

数组a[++i}和数组a[i++]有区别吗?

22楼:自由↗定义

有区别,举例说明:a[3]=;i=1;

那么 a[++i]=a[2]=3;

a[i++]=a[1]=2;然后i=i+1a[++i]相当于a[i+1]; i=i+1;

a[i++]相当于a[i];i=i+1;

如何理解1焦的物理意义,为什么能同时表示力与电做的功

1楼 匿名用户 我们说电具有电能,可以对外做功,它是以电场的形式与外界作用的。如果我们把一个电荷放在电场中,这个电荷就会受到电场力的作用而移动,它的本质还是力对物体的作用。 2楼 棢犮耜羽 答案 电压 是用来表示电场力做功的能力物理量电压 u w q 电压代表电场力对单位正电荷由场中一点移动到另一点...

高中物理a-t图象加速度变化,高中物理。a-t即加速度-时间图像的斜率表示什么?为什么图线与x轴围成的面积表示速度?? 就高中运动

1楼 匿名用户 斜率在变小呀你就当 的斜率为 1 2 当 的斜率为 1 3 一看就看出来了在变小呀 斜率的大小看绝对值的 高中物理。a t即加速度 时间图像的斜率表示什么 为什么图线与x轴围成的面积表示速度 就高中运动 2楼 超100悟饭 1 a t即加速度 时间图像的斜率表示 加速度变化率 a t...