在C语言中,这个都是首地址的意思,我就不懂,*(a+i)是取值呀,怎么会是地址,就这个不懂,希望帮忙,谢谢!!!
我知道没错,但我不理解为什么*(a+i)也是地址,而不是指针所指的变量值呢?
*(a+i)与a[i]是一样的地址,为什么?
(a+i)与a[i]是一样的地址应该是说他们指向的都是同一个内存单元,也就是说*(a+i)指向的值的地址,与a[i]指向的值的地址都是一样的。也就是说他们得到的值是一样的。这里不是说他们得到的是一个内存变量的地址还是内存变量的值,只是说明他们是一样的,得到的值一样,换句话说就是一样的...
*(a+i)与a[i]与(a+i)是一样的地址,为什么?
呵呵,你错了,对于数组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[i]与a+i的表示等价?谢谢啦
a表示的数组首地址,指针和数组在一定程度上是一样的。所以a[i]和*(a+i)指向的元素是一样的。a[i]表示给定了数组首地址的存储位置a 寻找数组中的第i+1个元素(数组第一个元素是a[0]),而*(a+i)就直接让指针指向数组第i+1个元素。
为什么.一个数组元素a[i]与a+i的表示等价?
只有a是二维数组时,a[i]与a+i才等价,他们都表示第i行的首地址,且类型相同。当a为一维数组时,他们并不等价。
...上说a+i是a[i]的指针,既然这样,那么*(a+i)为什么还是
a+i其实就是&a[i],肯定是地址 (a+i)其实就是a[i],如果a是二给数组的数组名,a[i]就肯定是地址(等同于&a[i][0]),如果a只是一维数组(指针数组除外)的数组名,a[i]就不是地址(原因是:二维数组可以看作是多个一维数组组成,即数组的数组)(a+i)+j就是&a[i][j],如果数组a是二维...
二组数组与指针中a[i]和*(a+i)等价问题
地址。在一位数组中是直。你可以这样理解,一个一位数组,他的每个元素都是一个数组,那他就是一个二维数组,那么a[i]或*(a+i)就表示相应的那个元素,而这个元素是一个数组,当然a[i]或*(a+i)指的就是这一数组的首地址,以此推之,a[i]+j或*(a+i)+j就是&a[i][j]...
c语言书上说a(i)和*(a+i)等价,我觉得不对啊
类似地 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+1).与显示中的a+1,所给出的地址是一样的,怎么理解?
(*(a+i)+j)这个是表示i行的第j个数据,注意啊,是两个 要是不理解,记住套用即可 一个*是指针 所以ij都是指针 a+1是一个指针,表示第1行的首地址(c中数组时从0开始计数的)在二维数组中,a,a[0],&a[0][0]这三个指针虽然都是a的首地址的值,但是在c中用起来是不一样的 a表示...
...1)为什么等于a+1,主要是想知道*(a+1)为什么是一个地址?
因为a是一个二维数组名,所以,a是一个二级指针,**a就是&a[0][0],a就是*(a+0),也就是&a[0]所以,*(a+1),也就是&a[1],与a[1]都是表示同一个意思,即&a[1][0]
*(a+i)与a[i]的区别
(a+i)是指向数组中第i个地址的指针 a[i]是数组中第i个元素 他们作用基本相同 其实数据在机器里都是存放在内存中 内存可以看似许多小格 数据就存放在这些小格一部分里 另一部分就是存放的地址了 学数据结构时可以学到哦 我就不啰嗦了 在C语言中可以通过("%p")这个指令来看他存放在哪 具体...