【发布时间】:2015-11-08 11:09:13
【问题描述】:
我想将一个矩阵传递给一个函数,然后将相同的矩阵返回给另一个函数。 这是我的代码的一部分:
int** inizializzazione_matrice(int matrice1[][MAX_COLONNE]){
int i = 0, k = 0;
while(i < MAX_RIGHE){
k = 0;
while(k < MAX_COLONNE){
matrice1[i][k] = i;
k++;
}
i++;
}
return matrice1;}
我这样称呼这个函数:
stampa_matrice(inizializzazione_matrice(matrice1));
stampa_matrice 是一个 void 函数,它接受 inizializzazione_matrice 的相同输入作为参数。
他们的声明是:
int** inizializzazione_matrice(int matrice1[][MAX_COLONNE]);
void stampa_matrice(int matrice1[][MAX_COLONNE]);
错误出现在inizializzazione_matricereturn matrice1;,错误代码为:int (*matrice1)[10] Error type value doesn't match the function type。
我不明白为什么,因为inizializzazione_matrice 的调用已经以同样的方式完成并且它有效。我也尝试使用双指针作为参数,但它是相同的,而且我在 Eclipse 中有一个旧代码,它以同样的方式工作得很好(这是可怕的部分)。
我错过了什么吗?如果您需要更多信息,请告诉我!
【问题讨论】:
-
您不需要返回
matrice1,更改就地进行,inizializzazione_matrice可以是void;另外,MAX_COLONNE应该与matrice1分开传递 -
另外,如果您没有在编译时启用警告,请这样做,在这种情况下,它们会提供额外的信息。至少使用
-Wall -Wextra,这将进一步帮助识别声明/参数/等中的不匹配。 -
我很确定我禁用了 Visual Studio 上的警告,因为它们阻止了我一时兴起的 VS 编译。我会检查并重新启用它以防万一
标签: c function matrix return arguments