MST

星途 面试题库

面试题:C语言指针的指针基础应用

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

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int main() {
    int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    int **ptr;
    int i, j;

    // 将二维数组首地址赋给指针的指针
    ptr = (int **)arr;

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

    return 0;
}

在上述代码中:

  1. 定义了二维数组arr并初始化。
  2. 定义了一个指向指针的指针ptr
  3. 通过强制类型转换将arr的首地址赋给ptr
  4. 使用两层循环,通过指针运算*((ptr + i * 4) + j)来访问并打印二维数组的每个元素。

需要注意的是,在C语言中,二维数组本质上是按行存储的一维数组,这里通过指针的指针模拟了对二维数组的访问,i * 4是为了正确跨越每行的元素个数。