MST

星途 面试题库

面试题:C语言指针与二维数组的关系

在C语言中,定义一个二维数组`int arr[3][4];`,有一个指针`int *ptr;`,如何让`ptr`正确指向`arr`中的某个元素,并通过`ptr`访问和修改该元素的值?请写出相关代码,并解释其中指针运算的原理。
18.8万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int main() {
    int arr[3][4];
    int *ptr;

    // 让ptr指向arr[1][2]
    ptr = &arr[1][2];

    // 通过ptr访问并修改该元素的值
    *ptr = 10;

    // 输出验证
    printf("arr[1][2]的值为: %d\n", arr[1][2]);

    return 0;
}

指针运算原理:在C语言中,二维数组在内存中是按行顺序存储的。arr是一个二维数组,arr[i][j]表示第i行第j列的元素。&arr[i][j]取该元素的地址,将这个地址赋值给ptrptr就指向了arr[i][j]。之后通过*ptr操作符来访问和修改该指针所指向地址存储的值。由于ptrint *类型,*ptr操作就对应到了arr[i][j]这个int类型的元素,对*ptr赋值就相当于对arr[i][j]赋值。