*(a+i)与a[i]的区别

在冒泡排序中,*(a+i)与a[i]代表的意思是相同的,但是他们是不是在机器中运算是相同的?机器一般采用哪一种啊?为什么?

*(a+i)是指向数组中第i个地址的指针
a[i]是数组中第i个元素
他们作用基本相同
其实数据在机器里都是存放在内存中
内存可以看似许多小格
数据就存放在这些小格一部分里
另一部分就是存放的地址了
学数据结构时可以学到哦
我就不啰嗦了
在C语言中可以通过("%p")这个指令来看他存放在哪
具体嘛采用哪种都可以
如果指针用的好的话建议使用指针
温馨提示:内容为网友见解,仅供参考
无其他回答

*(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个元素。

c语言书上说a(i)和*(a+i)等价,我觉得不对啊
a(i)等价于&a(i)(0) --- 不是小括号,是方括号,用于2 维 下标变量时的 a[i] 等价于 &a[i][0]a[i] 是第 i 行 的 首地址,等价于 &a[i][0]

二组数组与指针中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[i],肯定是地址 (a+i)其实就是a[i],如果a是二给数组的数组名,a[i]就肯定是地址(等同于&a[i][0]),如果a只是一维数组(指针数组除外)的数组名,a[i]就不是地址(原因是:二维数组可以看作是多个一维数组组成,即数组的数组)(a+i)+j就是&a[i][j],如果数组a是二维...

关于对数组元素a[i][j]的引用:*(*(a+i)+j)为什么也正确呢,*(a+i...
a[i]也是地址,表示第 i 行的地址,a+i表示相对于地址a偏移 i 个单位的地址,与a[i]等同,(a + i)表示对 相对于地址a偏移 i 个单位的地址 取内容,即表示对a[i] 的地址 再取内容,因为a[i] 与&a[i]等同,所以取出的为a[i]的地址,也与a[i]等同,为同一地址。而*(*(a+...

二维数组中*(a+i)是什么意思
在C语言中规定,数组名代表的是数组首元素地址。a是二维数组的数组名,因此,在二维数组中*(a+i)表示的是第i+1行0列元素的地址,即a[i][0]的地址。而a+i表示的是第i+1行的首地址。

二维数组中,a+i表示第i行的地址,那为什么*(a+i)也表示第i行的地址。
a+i和*(a+i)的值相同没错,但它们的类型不一样,代表的意义也不一样。a+i还是2维指针,*(a+i)则是一维指针。编译器对它们的解析和操作是不一样的。

*a[1]与(*a)[1]
a[i] 指首地址为a,第a+i的位置存储的数据 所以等效于*(a+i)首先要明确 * 的对象是指针 所以 此时数组a中存储的应为指针 (就是数组中存储的数据 是指针)而(*a)[i]指的是数组(*a)的第(*a)+i位置上的数据,所以(*a)必须是指针 这样就有了 当我们定义int **top,data,a[100]...

相似回答