C - 将二维数组上的指针传递给函数

标签 c arrays function pointers parameters

我必须将二维整数数组(实际上是生活游戏网格)上的指针传递给函数。此函数无法知道宽度和高度。函数原型(prototype)应该是什么?
我试过:

int function(int (*grid)[][], int height, int width);

这会导致错误:“数组类型具有不完整的元素类型”
在不知道数组维度的情况下,我无法想出任何其他方法。

(稍微解释一下:网格的宽高是在main.c文件中#define的,而我需要的函数原型(prototype)在一个头文件中,所以访问不了这个#define。 ..)

谢谢

最佳答案

除非您像我一样使用 MS Visual Studio 2013 Express,并且手中有一个符合 C99 标准的编译器,否则您可以执行以下操作:

int function( int height, int width, int (*grid)[height][width] );

您所需要的只是可变长度数组 (VLA) 功能,这是半兼容的 MSVC 所缺少的。这是它的用法示例:http://ideone.com/J3y2oi

关于C - 将二维数组上的指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708383/

相关文章:

c# - 在 C# 中对简单 C 共享对象文件使用 DllImport 时出现 DllNotFoundException

c++ - 添加两个号码。无需任何运算符(operator)

c++ - 将字符串中表示的大数除以 3

c - 传递一个 "normal"二维数组作为 **

javascript - .splice() 方法在 Javascript 中不起作用?

ms-access - Access 表达式问题 : it's too complex, 那么如何将其转换为函数?

c - 使用 open() 和 read() 读取 C 中的二进制整数文件

c - C 中的段错误。尝试连接命令行参数

c++ - 当我调用我的函数时没有任何反应?

python 在列表中查找不同的元素