我在C中有以下代码,其中G
是一个全局变量:
long *G;
int function(long matrix[35][10]){
G=&matrix[0][0];
}
将matrix[0][0]
的地址存储在G
后,我可以访问matrix
的所有元素,如下所示:
G[0]=...
G[1]=...
.
.
.
G[349]=...
我希望能够通过使用另一个函数内部的两个方括号来访问所有这些与matrix
类似的元素。我怎么能这样做?也就是说,如何告诉编译器这个二维数组中第二维的偏移量是10?
我确实看过这个答案: Create a pointer to two-dimensional array ,但我不确定用户是否问过完全相同的事情。如果我错了,请纠正我
答案 0 :(得分:2)
long (*array)[10] = (long(*)[10])G;
array
是一个指向10 long
s。
答案 1 :(得分:-2)
让G指针指向。
long **G;
你仍然无法通过G [i]直接访问我从0到349。
但是,你可以做的一件容易的事就是将一个数字转换为2个下标。
例如:
G[349] is actually G[34][9].
因此公式是 如果你想要
G[k]
然后像这样访问它:
G[k/10][k%10];
这是针对这种特殊情况。
一般情况下, 将1个下标转换为2个下标的公式为:
G[k] is equivalent to G[k/NO_OF_COLUMNS][k%NO_OF_COLUMNS];