我在程序中声明了一个全局变量:

double mat[3200][3200];


当使用变量的名称作为参数将此数组传递给fwrite()时,在运行时会引发堆栈溢出。

fwrite(mat, sizeof(double), 3200*3200, fid);


这是为什么?编译器是否应使用指向其第一个元素的指针替换变量mat?

我读过herehere,但仍然听不懂。

最佳答案

堆栈溢出错误可能是由于无限递归(在您的示例中不太可能)或堆栈上传递的数据过多(参数)。看来您的数组是通过副本而不是地址传递的。

您可以尝试将呼叫替换为

fwrite(&(mat[0][0]), sizeof(double), 3200*3200, fid);


静态数组不是指针。

关于c - 在C中按名称将数组传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4439795/

10-11 04:02