将指针转换为二维数组

标签 c arrays pointers multidimensional-array

给定的是这个函数

void printMatrix(int *m, int ze, int sp)

现在 *m 应该是一个二维数组(或者更像是一个指向二维数组的指针)。

那么如何将这个 *m 用作 m[][] 呢?

最佳答案

可变长度数组可以在这方面为您提供帮助:

int (*p)[sp] = (void*) m;

现在您可以通过p[i][j]访问元素。

See it live on Coliru

关于严格的别名规则的明确定义:它是有效的,因为 mp 都指向兼容的类型。

关于将指针转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701239/

相关文章:

c - 从 C 中的 .dat 文件读取变量时出现问题

c - 如何从文本文件中提取IP地址

c - 为什么我不能将数组名称放在等号的左侧

c - 获得帮助递归 C 编程

c - C 中 &pointer 的结果是什么?

javascript - 增加字符串中的 X

javascript - 使用 Javascript for 循环创建 Javascript 数组

C++ - 带有结构指针的字符串输入?

将 RAM 地址转换为指向结构的指针的理解困惑

c - 在 C 中使用指针遍历多维数组