MST
星途 面试题库

面试题:C语言二维数组存储顺序相关问题

在C语言中,定义一个二维数组`int arr[3][4];`,请简述该二维数组在内存中的存储顺序,并说明如何通过指针的方式按存储顺序遍历该二维数组。
12.6万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 存储顺序
    • 在C语言中,二维数组int arr[3][4];在内存中是按行优先顺序存储的。即先存储第一行的元素,接着存储第二行的元素,最后存储第三行的元素。具体来说,先存储arr[0][0]arr[0][1]arr[0][2]arr[0][3],然后是arr[1][0]arr[1][1]arr[1][2]arr[1][3],最后是arr[2][0]arr[2][1]arr[2][2]arr[2][3]
  2. 通过指针按存储顺序遍历
    • 方法一:使用指向数组元素的指针。
#include <stdio.h>

int main() {
    int arr[3][4];
    int *ptr = &arr[0][0];
    for (int i = 0; i < 3 * 4; i++) {
        printf("%d ", *(ptr + i));
    }
    return 0;
}
  • 方法二:使用指向一维数组的指针。
#include <stdio.h>

int main() {
    int arr[3][4];
    int (*ptr)[4] = arr;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            printf("%d ", *(*(ptr + i)+j));
        }
    }
    return 0;
}