c++数组 指针 地址

来源:百度知道 编辑:UC知道 时间:2024/07/06 18:53:31
一维数组的起始地址、数组第一个元素的地址、数组第一个元素的起始地址···他们之间有何联系?
书上有很多概念,我在问一下,比如说一个二维数组,
第i行第j列元素的地址和第i行第j列元素的起始地址又有什么不一样呢?书上为什么还这样区分呢?

一维数组的起始地址,数组第一个元素的地址在数值上是相同的,但是其含义是不同的。假设p1是指向数组的指针,p2是指向数组元素的指针,可以使用sizeof在解除应用后对其分别进行操作,得到sizeof(*p1)的大小为整个数组的大小,sizeof(*p2)的大小为数组元素类型的大小。
在二维数组中这一现象更加明显,譬如一个数组为array[10][10],将涉及到三类指针,分别是指向整个二维数组的指针,指向一维数组的指针,以及指向数组元素的指针;可以对指针进行+1操作,可以发现:指向一维数组的指针在+1后会指向下一列,而指向数组元素的指针在+1后会指向下一个元素。

这里涉及到一个“指向数组的指针”的概念,可以找相关书籍来看一下。

都是一样的。

数组的起始地址和数组的第一个元素的地址在值上是一样。但他们的含义不同,
如 int a[10];
这里,a是数组地址,它可以代表整个数组
而&a[0]只是第一个元素地址,只是因为他是第一个元素所以才和a在数值上一样。
但&a[0] 不能代表整个数组。

他们的地址值是一样的,但是含义不同,建议你看一下谭浩强的C语言,就是排长,班长那部分,会有所收获的!