二维数组是什么
二维数组是一个数组,数组的元素是数组
type arr[N] = { arr[M] };
上图等价于type arr[N][M] N行M列数组,N和M都为整形常量
二维数组的存储方法
如图是一个两行两列的二维数组,比如int a[2][2],在内存中是如何存储的采用的是蛇形的方法
二维数组的使用
1 #include<stdio.h> 2 int main(void) 3 { 4 int *ptr; //指针 5 // int (*ptr)[2]; 6 int torf[2][2] = {12,14,16}; //torf 表示含有两个int元素的数组的首地址,torf[0]表示含有一个int元素的数组的首地址 7 // int torf[2][2] = {{12},{14,16}}; 8 ptr = torf[0]; //指针指向一维数组 9 printf("*ptr = %10d, *(ptr+1) = %10d, *(ptr+2) = %10d\n",*ptr, *(ptr+1), *(ptr+2)); 10 printf("ptr = %10p, (ptr+1) = %10p, (ptr+2) = %10p\n",ptr, (ptr+1) , (ptr+2)); 11 printf("torf = %10p, (torf+1) = %10p, (torf+2) = %10p, &torf[0] = %10p, &torf[1] = %10p, &torf[2] = %10p\n",torf, (torf+1),(torf+2), \ 12 &torf[0], &torf[1], &torf[2]); 13 printf("&torf[0][0] = %10p, &torf[0][1] = %10p, &torf[1][0] = %10p, &torf[1][1] = %10p, &torf[2][0] = %10p\n",&torf[0][0], &torf[0][1], \ 14 &torf[1][0], &torf[1][1],&torf[2][0]); 15 printf("torf[0][0] = %10d, torf[0][1] = %10d, torf[1][0] = %10d, torf[1][1] = %10d, torf[2][0] = %10d\n",torf[0][0], torf[0][1],\ 16 torf[1][0], torf[1][1],torf[2][0]); 17 18 return 0; 19 }
*ptr = 12, *(ptr+1) = 14, *(ptr+2) = 16
ptr = 000000000062FE30, (ptr+1) = 000000000062FE34, (ptr+2) = 000000000062FE38
torf = 000000000062FE30, (torf+1) = 000000000062FE38, (torf+2) = 000000000062FE40, &torf[0] = 000000000062FE30, &torf[1] = 000000000062FE38, &torf[2] = 000000000062FE40
&torf[0][0] = 000000000062FE30, &torf[0][1] = 000000000062FE34, &torf[1][0] = 000000000062FE38, &torf[1][1] = 000000000062FE3C, &torf[2][0] = 000000000062FE40
torf[0][0] = 12, torf[0][1] = 14, torf[1][0] = 16, torf[1][1] = 0, torf[2][0] = 0
如何用指针表示二维数组
数组指针指向多维数组的指针——》表示多维数组,int arr[2][2]; int (*p_two)[2] = arr
指针指向一维数组的首地址——》表示一维数组,int arr[2] ; int *p_one = arr;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具