【发布时间】:2017-10-31 22:05:18
【问题描述】:
我需要一个指向二维数组的指针。如果有帮助,大小在编译时是已知的。我需要根据变量的传入值对某个数组执行操作。
//Global arrays
// int c[6000][1000];
// int a[6000][1000];
void fun(int x){
//Setup a pointer here
//Possible solution: int (*pointer)[6000][1000];
int **pointer;
if (x == 0){
pointer = c;
}
else{
pointer = a;
}
//Modify pointer here and have changes reflect back to the array it was based off of
pointer[0][17] = 42;
}
我已经查看了近十篇关于如何执行此操作的不同堆栈溢出文章,但我无法找到一种方法来获取指向 2D 数组的简单指针。
【问题讨论】:
-
A
**pointer与二维数组不同,尽管它可以以相同的方式进行索引。 -
@WeatherVane 我将如何访问指针的元素(指向常规二维数组)?这可能很容易做到吗?谢谢
-
@xing 我想你想说的是一维数组。我已经为 2D 数组
int **pointer = c1;printf("%d\n", *(*(pointer + 0) + 0));尝试过类似的东西,但是这个 seg 错误。 -
正如xing所说,就
int (*pointer)[1000] = x ? a : c; -
看看this。
标签: c pointers multidimensional-array