c - 在 C 中使用指针访问多维数组的最简单方法

标签 c

假设我有 2 个二维数组:

int a1[][2] = { {1,2}, {3,4}, {5,6} };
int a2[][2] = { {7,8}, {9,0}, {1,1} };

和一个指针:

int *a;

指针将指向其中一个数组,并在某个时刻指向另一个数组(来回)。每次重新分配指针后,我想从数组中读取数据,最简单的方法是什么?

我可以通过以下方式实现我想要的:

a = (int *)a1;
printf("D: %d\n", (int)(*a)+(x*2)+(y)));
a = (int *)a2;
printf("D: %d\n", (int)(*a)+(x*2)+(y)));

输出(假设x = 0y = 1):

D: 2
D: 8

是否有另一种更简单的方法来访问数组,即通过使用标准 [] 运算符?如果没有,那么您将如何使其更加“美丽”...您会创建一个宏或函数,或者首选的实现方式是什么?

最佳答案

如果您总是有配对,则可以使用[]并将指针转向

int (*a)[2];

这应该可以写

a = a1;
printf("D: %d\n", a[x][y]);

关于c - 在 C 中使用指针访问多维数组的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8134594/

相关文章:

包含头文件中的 C 预处理器

无法执行 netcat

c - 在结构体中使用指针来分配字符串

objective-c - IOS 进程内部 - 如何获取信息?

c - 如何找到直线上的最佳位置点?

java - java中unsigned long的等价物是什么

c - 如何从字符串初始化字符数组,其间具有特殊的十六进制值

c - 如何通过包含指向结构体指针的数组元素来访问和修改结构体内部声明的指针类型变量?

c - 摆脱文件名中不允许的字符

c - 变量地址和整数地址之间的区别