开发者学堂课程【C语言学习教程:二维数组_内存结构】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/387/detail/4901
二维数组_内存结构
内容介绍:
一、二维组数的内存存储
二、验证二维数组内存的连续性
三、练习
一、二维组数的内存存储
二维数组的元素在内存存储上是连续的,我们可以通过如下程序来验证结果:
int arr[3][5],I,j;
for(i=0; i<3; i++) {
for(j=0; j<5; j++)
print(“&ar[%d][%d]=%p arr[%d][%d]=%d\n”,i,j,&arr[i]
[j]i,j,arr[i][j]);
}
}
上述程序验证的方法:
通过%p 来打印变量地址
二、验证二维数组内存的连续性
1.若其内存地址按规律变化,则其是连续的。
2.了解%p
int a = 10;
printf ("%p\n",&a);
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
printf("%p ",&array[i] [j]);
}
printf("\n");
}
二维数组名字是整个二维数组内存起始地址,也是二维数组中第一个子数组内存起始地址
array[0]是第一个数组的首地址,而 array 是整个二维数组的首地址。
三、练习
1、矩阵加法:
定义两个大小相同的二维数组,并初始化。
分别输出两个二维数组的值,以及两个数组相同位置上的值相加以后的结果
答:首先编两个大小相同的二维数组
再把每一个数组元素的值都打印出来,并且打印出对应位置上的数之和
int arr1[2][3] ={1,2,3,4,5,6}
int arr2[2][3] = {10,20,30,40,50,60}
for (int i=0; i<2; i++) {
for (int j=0; j<3; j++) {
printf ("%d+%d=%d" ,arr1[i][j],arr2[i] [j],arr1[i]lj]+arr2[i] [j]);
}
putchar(‘\n’);
}