2025-09-09指针和二维数组

内容分享3小时前发布
0 0 0

C语言并没有真正意义上的二维数组。在C语言中二维数组的实现只是简单的通过线性扩展的方式进行。

int b[4][5];就是定义四个元素,每个元素都是一个包含5个整型变量的一维数组,它在内存中依然是以线性形式存储的。

2025-09-09指针和二维数组

1.array表明的是什么

array是整个二维数组的首地址。另外,我们知道在一维数组中,数组名相当于数组第一个元素的指针(地址)。由于二维数组实际上是一维数组的扩展所以 array应该理解为“指向包含五个元素的指针(地址)”。

2025-09-09指针和二维数组

2025-09-09指针和二维数组

指针的类型决定了指针的视野,指针的视野决定了指针的跨度,array的跨度可以看到是0xb7ffe90bd3240==0x14==20字节,每个整型变量在我们的系统中是占4字节的空间,所以array和array+1之间相差5个元素的距离,即array的跨度是5个元素。因此,也证明了array就是指向包含5个元素的数组的指针(地址)这句话。

2. *(array +1)表明的是什么

array+1 同样是“指向包含5个元素的数组的指针(地址)”;其次,*(array +1)相当于array[1],而array[1]相当于array[1][0]的数组名。因此可以得出结论,*(array+1)是指向第二行子组第一个元素的地址

2025-09-09指针和二维数组

2025-09-09指针和二维数组

2025-09-09指针和二维数组

3.*(*(arry+1)+3)表明的是什么

我们知道*(array +1)是指向第二行子数组第一个元素的指针,所以对其再+3,得到的结果必然是指向第二行子数组第四个元素的指针,再对其进行取值,得到的就是二维数组中第二行第四列的元素值

2025-09-09指针和二维数组

2025-09-09指针和二维数组

2025-09-09指针和二维数组

无论是二维数组也好多维数组也罢,下标索引的形式都可以转换为使用指针间接索引的形式,并且它们之间是完全等价的。

2025-09-09指针和二维数组

© 版权声明

相关文章

暂无评论

none
暂无评论...