二维数组的创建
int arr [3] [5]
char arr [3] [4]
double arr [3] [2]
二维数组的初始化:
int main()
{
//创建
int arr[3][4];
//初始化 - 创建的同时给赋值
int arr[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12};
return 0;
}
创建二维数组如下:
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
int main()
{
int arr[3][4]={1,2,3,4,5,6};
return 0;
}
不完全初始化,后面补0,即创建的二维数组为
1 | 2 | 3 | 4 |
5 | 6 | 0 | 0 |
0 | 0 | 0 | 0 |
那如果这样写,数组会是如何呢?
int main()
{
int arr[3][4] = { {1,2}, {3,4}, {5,6} };
return 0;
}
即是:
1 | 2 | 0 | 0 |
3 | 4 | 0 | 0 |
5 | 6 | 0 | 0 |
二维数组的使用:
#include <stdio.h>
int main()
{
int arr[][4] = { {1,2}, {3,4}, {5,6} };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
这里我们运用for循环语句来表示出arr[][4]数组中的每一个。
注意:数组的行数可以省略,但列数不能省略!
二维数组在数组中的存储:
#include <stdio.h>
int main()
{
int arr[][4] = { {1,2}, {3,4}, {5,6} };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("&arr[%d][%d]= %p\n", i, j & arr[i][j]);
}
}
return 0;
}
结果如下:
说明:二维数组在内存中也是连续存放的
(一行内部连续,跨行也是连续的!)