深入理解二维数组

Posted 自由石匠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解二维数组相关的知识,希望对你有一定的参考价值。

 1 #include<stdio.h>
 2 #define debug 0
 3 int main()
 4 {
 5     int a[3][4]={{8,2,6,4},{1,4,7,9}},i,j;
 6     #if debug
 7     a++;
 8     a[0]++;
 9     a[1]++;
10     a[2]++;
11     a[3]++;
12     #endif 
13     printf("a:%p      a+1:%p\\n\\n",a,a+1);//相差16字节 
14     
15     printf("a[0]:%p  a[0]+1:%p  &a[0][1]=%p\\n",a[0],a[0]+1,&a[0][1]);    
16     printf("a[1]:%p  a[1]+1:%p  &a[1][1]=%p\\n",a[1],a[1]+1,&a[1][1]);
17     printf("a[2]:%p  a[2]+1:%p  &a[2][1]=%p\\n",a[2],a[2]+1,&a[2][1]);
18     printf("a[3]:%p  a[3]+1:%p  &a[3][1]=%p\\n",a[3],a[3]+1,&a[3][1]);
19     return 0;
20 }//a[0] ,a[1],a[2],a[3]是一维数组名,代表一维数组的起始地址,是地址常量
21 //a+1和a的地址差16个字节,相当于四个元素,a代表第一行的地址,a+1代表第二行的地址。
22 /*a[0]+1和a[0]的地址差4个字节,相当于1个数组元素。因此a[0]+1相当于元素a[0][1]的地址
23 a[1]+1=&a[1][1],a[2]+1=&a[2][1] */

以上是关于深入理解二维数组的主要内容,如果未能解决你的问题,请参考以下文章

深入理解一趟冒泡排序的本质,解决二维数组中求子数组最大和

深入理解一维数组与二维数组

Java基础 | 深入理解多维数组

对java中hashmap深入理解

深入理解C语言的指针

C语言进阶笔记深入了解进阶指针