假设我有 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 = 0
和y = 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/