二维数组定义语法
定义语法:
int arr[2][3] =
{
{2, 5, 8},
{7, 9 10}
};
int arr[3][5] = {{2, 3, 54, 56, 7 }, {2, 67, 4, 35, 9}, {1, 4, 16, 3, 78}};
大小:
数组大小: sizeof(arr);
一行大小: sizeof (arr[0]): 二维数组的一行,就是一个一维数组。
一个元素大小:sizeof (arr[0][0]) 单位:字节
行数:row = sizeof(arr)/ sizeof(arr[0])
列数:col = sizeof(arr[0])/ sizeof(arr[0][0])
地址合一:
printf("%p\n", arr); == printf("%p\n", &arr[0][0]); == printf("%p\n", arr[0]);
数组的首地址 == 数组的首元素地址 == 数组的首行地址。
代码验证:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main()
{
int arr[3][4] = { {2, 7, 8, 5},
{75, 8, 9, 8},
{26, 37, 99, 9} };
for (int i = 0; i < 3; i++) //行
{
for (int j = 0; j < 4; j++) //列
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("数组的大小为:%u\n", sizeof(arr));
printf("数组行的大小:%u\n", sizeof(arr[0]));
printf("数组一个元素的大小:%u\n", sizeof(arr[0][0]));
printf("行数=总大小/一行大小:%d\n", sizeof(arr) / sizeof(arr[0]));
printf("列数=行大小/一个元素大小:%d\n", sizeof(arr[0]) / sizeof(arr[0][0]));
printf("arr= %p\n", arr);
printf("&arr[0] = %p\n", &arr[0][0]);
printf("arr[0] = %p\n", arr[0]);
}