一、解析二维数组的创建和初始化
二维数组的创建实例:
int arr[3][4];
char arr[3][5];
double arr[2][4];
二维数组的初始化实例:
int arr[3][4] = { 1, 2, 3, 4 };//初始化了第一行
int arr[3][4] = { { 1, 2 }, { 4, 5 } };//初始化了前两行的前两个元素,其余地方补0
int arr[][4] = { { 2, 3 }, { 4, 5 } };//默认两行
二、二维数组的使用
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[3][4] = { 0 };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
arr[i][j] = i * 4 + j;
}
}
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
}
system("pause");
return 0;
}
运行结果为:
三、二维数组的存储
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[3][4];
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);
}
}
system("pause");
return 0;
}
运行结果为:
由此可见,二维数组在内存中也是连续存储的,且同样先存低地址。
四、二维数组的指针访问
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[3][4] = { 0 };
int i = 0;
int *p = &arr[0][0];
for (i = 0; i < 3 * 4; i++)
{
p[i] = i;
}
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
}
system("pause");
return 0;
}
运行结果为: