c - 如何将 (long *) 转换为二维 long 数组

标签 c arrays pointers

我在 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 ,但我不确定用户是否问了完全相同的问题。如有错误请指正

最佳答案

long (*array)[10] = (long(*)[10])G;  

array 是一个指向 10 long 数组的指针。

关于c - 如何将 (long *) 转换为二维 long 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448480/

相关文章:

c - strlen(&string[]) 是如何工作的?

java - 多个变量的返回和编辑[JAVA]

c - 指针类型的char数组的反向引用

c - 外部、内部且没有链接,或者为什么这不起作用?

c - 使用 CMake 生成 SWIG 绑定(bind)

c - 如何为二维数组分配和释放堆内存?

c++ - 是否保证 sizeof(T[N]) == N * sizeof(T)?

c - 尝试使用指针在数组中插入元素,但未成功

c++ - 完成生产者消费者队列后,如何通过交换指针来避免条件成本?

c - 声明 gchar 后是否需要 g_free?