*(a+i)与a[i]与(a+i)是一样的地址,为什么? 10
我知道没错,但我不理解为什么*(a+i)也是地址,而不是指针所指的变量值呢?对于*(a+i)中a表示&a[0][0],所以a+1就代表&[1][0],在加个*,明明就是个...
我知道没错,但我不理解为什么*(a+i)也是地址,而不是指针所指的变量值呢?对于*(a+i)中a表示&a[0][0],所以a+1就代表&[1][0],在加个*,明明就是个值吗 求求各位大哥,好好给我解释一下吧!
1楼的大哥,可能是我没说清楚,对不起啊!
我指的是二维数组,int a[3][4];
对于二维数组,数组名a确实表示&a[0][0],这个绝对没有错
你再好好替我想想呗,谢谢你啊! 展开
1楼的大哥,可能是我没说清楚,对不起啊!
我指的是二维数组,int a[3][4];
对于二维数组,数组名a确实表示&a[0][0],这个绝对没有错
你再好好替我想想呗,谢谢你啊! 展开
展开全部
呵呵,你错了,对于数组a[i],a表示该数组的起始地址,即a=&a[0], 所以 *(a+i)表示a+i指向的数组元素,*(a+i)=a[i]。
对于二维数组,&a[0][0]就不能用a表示了,而是用a[0]+0表示,二维数组可以看成一维数组,不过它的每一个数组元素又是一个一维数组,比如a[3][4]的第一行元素a[0][0],a[0][1],a[0][2],a[0][3]可以看成是一维数组a[0]的4个元素,即把a[0]看成一个数组名。故二维数组a[i][j]的地址可以表示成a[i]+j或
*(a+i)+j。再懂了吧。
对于二维数组,&a[0][0]就不能用a表示了,而是用a[0]+0表示,二维数组可以看成一维数组,不过它的每一个数组元素又是一个一维数组,比如a[3][4]的第一行元素a[0][0],a[0][1],a[0][2],a[0][3]可以看成是一维数组a[0]的4个元素,即把a[0]看成一个数组名。故二维数组a[i][j]的地址可以表示成a[i]+j或
*(a+i)+j。再懂了吧。
展开全部
*(a+i)与a[i]是一样的地址应该是说他们指向的都是同一个内存单元,也就是说*(a+i)指向的值的地址,与a[i]指向的值的地址都是一样的。也就是说他们得到的值是一样的。
这里不是说他们得到的是一个内存变量的地址还是内存变量的值,只是说明他们是一样的,得到的值一样,换句话说就是一样的地址。(一样的地址难道值会布一样??)
这里不是说他们得到的是一个内存变量的地址还是内存变量的值,只是说明他们是一样的,得到的值一样,换句话说就是一样的地址。(一样的地址难道值会布一样??)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是的,给*p赋值,并不是直接赋给它数值,而是赋给他一个地址,比如说:*p=&i,那么就给*p赋给了i的内存地址,系统在读取到内存地址之后再读出该内存所存的数值,而*p的内存地址等于i的内存地址,所以*p的数值与i的数值是一样的,虽然
在赋值语句之后,*p等价于i,
但是不能说直接把数值赋了*p。*p=&i的含义是变量i的地址作为一个数据存放在指针变量p所对应的内存单元中。
在赋值语句之后,*p等价于i,
但是不能说直接把数值赋了*p。*p=&i的含义是变量i的地址作为一个数据存放在指针变量p所对应的内存单元中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么说吧,*(a+i)与这个地址存的参数等效,*的意思是根据指针这个地址调出这个地址上的值。那么,说是地址也没有错,只能说不是很严谨。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你内个说法有点错误
c++
二维数组
指针中
a+i
表示数组a的第i行第0列元素的地址
*(a+i)表示数组a的第i行第0列元素的值
估计你内个是书上印错了,教科书各种错,例题代码也各种错,你得自己根据定义去理解,它只是说个大概意思
c++
二维数组
指针中
a+i
表示数组a的第i行第0列元素的地址
*(a+i)表示数组a的第i行第0列元素的值
估计你内个是书上印错了,教科书各种错,例题代码也各种错,你得自己根据定义去理解,它只是说个大概意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询