【发布时间】:2015-06-12 04:18:21
【问题描述】:
环顾四周后,我构建了一个函数,该函数接受一个矩阵并在其上执行我需要的任何操作,如下所示:
float energycalc(float J, int **m, int row, int col){
...
}
在 main 中定义并填充了数组的大小,但是我不能将其传递给函数本身:
int matrix[row][col];
...
E=energycalc(J, matrix, row, col);
这会导致编译期间出现警告
"project.c:149: 警告:从'energycalc' 传递参数 2 不兼容的指针类型 project.c:53:注意:预期为“int **”,但 参数的类型为‘int (*)[(long unsigned int)(col + -0x00000000000000001)]’
并导致分段错误。
非常感谢任何帮助,谢谢。
【问题讨论】:
-
float energycalc(float J, int row, int col, int m[row][col] ){ -
数组数组与指向指针的指针不同,请参阅例如 this old answer of mine 了解原因。不过,您可能会使用指向数组的指针(例如
int (*m)[])。 -
@legends2k 这个问题只被标记为
C...当Cool Guy 抱怨我的回答时,我发现很难。 -
C 重复:2D array passing to a function 和 passing 2d arrays。不用担心,我只是环顾四周就找到了 2 个,如果我们出汗更多,我们肯定可以挖掘更多 :)
-
检查骗子,你会发现比这里发布的任何答案都更完整。