方式一:按行初始化
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
- 使用场景:适合明确知道每一行元素具体值的场景,代码可读性强,方便直观地看到每一行的数据。
- 内存分配:在栈上连续分配内存,按行顺序存储,先存储第一行4个元素,接着第二行4个元素,最后第三行4个元素。
方式二:按顺序初始化
int arr[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
- 使用场景:适用于数据顺序生成,无需关注行划分的场景,代码书写更简洁。
- 内存分配:同样在栈上连续分配内存,存储顺序和按行初始化一样,只是初始化方式不同,也是按行的顺序依次存储元素。
方式三:部分初始化
int arr[3][4] = {
{1, 2},
{5}
};
- 使用场景:当只想初始化部分元素,其余元素自动初始化为0时使用。例如,矩阵很多元素为0,只有少数非零元素的情况。
- 内存分配:内存分配和前两种一样在栈上连续存储,未显式初始化的元素默认初始化为0。第一行初始化前两个元素,后两个为0;第二行第一个元素初始化,后三个为0;第三行全为0。