MST

星途 面试题库

面试题:C语言二维数组初始化的常见方式及区别

请列举至少两种C语言二维数组初始化的常见方式,并说明它们在使用场景和内存分配上有什么区别。例如,对于一个3行4列的二维数组`int arr[3][4];`,分别用不同方式进行初始化并解释。
42.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

方式一:按行初始化

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。