我在程序中声明了一个全局变量:
double mat[3200][3200];
当使用变量的名称作为参数将此数组传递给fwrite()时,在运行时会引发堆栈溢出。
fwrite(mat, sizeof(double), 3200*3200, fid);
这是为什么?编译器是否应使用指向其第一个元素的指针替换变量mat?
我读过here和here,但仍然听不懂。
最佳答案
堆栈溢出错误可能是由于无限递归(在您的示例中不太可能)或堆栈上传递的数据过多(参数)。看来您的数组是通过副本而不是地址传递的。
您可以尝试将呼叫替换为
fwrite(&(mat[0][0]), sizeof(double), 3200*3200, fid);
静态数组不是指针。
关于c - 在C中按名称将数组传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4439795/