MST

星途 面试题库

面试题:C语言中指针访问二维数组基础

假设有一个二维数组 `int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};`,请使用指针的方式遍历并打印出该二维数组的所有元素。
19.8万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int main() {
    int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    int (*p)[4] = arr; // 定义指向包含4个元素的一维数组的指针

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            printf("%d ", *(*(p + i) + j));
        }
        printf("\n");
    }

    return 0;
}

在上述代码中:

  1. 定义了一个指向包含4个int类型元素的一维数组的指针p,并让它指向二维数组arr
  2. 通过两层循环,外层循环遍历二维数组的行,内层循环遍历二维数组的列。
  3. 使用*(*(p + i) + j)这种指针形式来访问二维数组中的每个元素,并进行打印。*(p + i)指向第i行,*(*(p + i) + j)则指向第i行第j列的元素。