面试题答案
一键面试#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]
取该元素的地址,将这个地址赋值给ptr
,ptr
就指向了arr[i][j]
。之后通过*ptr
操作符来访问和修改该指针所指向地址存储的值。由于ptr
是int *
类型,*ptr
操作就对应到了arr[i][j]
这个int
类型的元素,对*ptr
赋值就相当于对arr[i][j]
赋值。