[英]Multidimensional arrays in functions in c
我进行了此练习,以在C中转置矩阵。我制作了一个函数来检查类型n * n,但是当我尝试向用户询问矩阵时,我不知道该如何声明该数组。 我在[n2]部分的函数中收到此编译错误“形式参数1的类型不完整”。
多维数组的函数参数不应该像这样-> int matrix [] [n2]。 或者是因为我使用的是变量而不是常量或预定义的大小。 ?
#include <stdio.h>
#define prompt "Dimenção da matriz (nxn) >>"
#define prompt_1 "Introduza os valores : "
void getType( int *n1, int *n2 );
void getMatrix( int matrix[][n2], int lim1, int lim2);
//void trans(int matrix[][n2]);
int main(int argc, char const *argv[]) {
int n1, n2;
getType(&n1, &n2);
int matrix[n1][n2];
//printf("%dx%d\n", n1, n2);
getMatrix(matrix, n1, n2);
//trans(matrix);
return 0;
}
void getType(int *n1, int *n2){
printf("%s", prompt );
scanf("%dx%d", &(*n1), &(*n2));
}
void getMatrix( int matrix[][n2], int lim1, int lim2){
printf("%s\n", prompt_1 );
for(int line = 0; line < lim1; line++ ){
for(int column = 0; column < lim2; column++){
printf("Linha %d coluna %d ->", line, column );
scanf("%d", &matrix[line][column]);
}
}
}
签名应为:
void getMatrix( int lim1, int lim2, int matrix[lim1][lim2] )
您可以省略方括号内的lim1,但包括它是一个很好的文档。
要点是,方括号内的变量必须是参数列表中较早版本的参数,或者是范围内的其他变量(只能是全局变量,但这通常是个坏主意)。
另外,检查scanf返回值也将是一件好事,否则您可能会创建具有垃圾尺寸的矩阵。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.