gpt4 book ai didi

c - 将矩阵传递给函数,C

转载 作者:行者123 更新时间:2023-12-04 00:08:01 25 4
gpt4 key购买 nike

环顾四周,我构建了一个函数,它接受一个矩阵并执行我需要的任何操作,如下所示:

float energycalc(float J, int **m, int row, int col){
...
}

在 main 中定义并填充了数组的大小,但是我不能将其传递给函数本身:

int matrix[row][col];
...
E=energycalc(J, matrix, row, col);

这会导致编译期间出现警告

"project.c:149: warning: passing argument 2 of ‘energycalc’ from incompatible pointer type project.c:53: note: expected ‘int **’ but argument is of type ‘int (*)[(long unsigned int)(col + -0x00000000000000001)]’

并导致段错误。

非常感谢任何帮助,谢谢。

最佳答案

函数应该这样声明

float energycalc( float J, int row, int col, int ( *m )[col] );

如果您的编译器支持可变长度数组。

否则如果在声明中

int matrix[row][col];

col 是一些常量然后函数可以用下面的方式声明

float energycalc(float J, int m[][col], int row );

前提是在函数之前定义了常量col

你的函数声明

float energycalc(float J, int **m, int row, int col);

适用于声明如下的数组

int * matrix[row];

并且数组的每个元素都是动态分配的,例如

for ( int i = 0; i < row; i++ ) matrix[i] = malloc( col * sizeof( int ) );

关于c - 将矩阵传递给函数,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29493783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com