在扫描数组的大小后,我需要能够将二维数组传递到扫描函数中。我看过的所有地方都告诉我,您不能将没有维度的二维数组传递给函数,但我不知道还有其他方法可以做到这一点。
void scan_arrays (int *array, int row, int column);
int main (void){
int row;
int column;
printf("Enter sizes: ");
scanf("%d %d",&row,&column);
int firstarray[row][column];
int secondarray[row][column];
printf("Enter array 1 elements:\n");
scan_arrays(&firstarray,row,column);
printf("Enter array 2 elements:\n");
scan_arrays(&secondarray,row,column);
for(int i = 0; i < row; i++){
for(int j = 0; j < column; j++){
printf("%d ",firstarray[i][j]);
}
printf("\n");
}
for(int i = 0; i < row; i++){
for(int j = 0; j < column; j++){
printf("%d ",secondarray[i][j]);
}
printf("\n");
}
return 0;
}
void scan_arrays (int *array, int row, int column){
for(int i = 0; i < row; i++){
for(int j = 0; j < column; j++){
scanf("%d",&array[i][j]);
}
printf("\n");
}
}```
I've only been coding for a couple of months.
最佳答案
函数应该这样声明:
void scan_arrays (int row, int column, int array[row][column]);
函数定义的第一行也是如此。
row
和 column
参数必须首先出现,以便它们在 array
中的使用范围内。范围。 row
数组维度在技术上是多余的,但代码自记录的简单方法。该函数将被调用如下:
scan_arrays(row, column, firstarray)
其余代码可以保持不变。
在定义数组之前对用户输入进行一些验证是个好主意:如果它们输入垃圾会导致麻烦,
0
、负数或导致堆栈溢出的大数。后一个问题可以通过动态分配来避免:int (*firstarray)[column] = malloc( sizeof(int[row][column]) );
if ( firstarray == NULL )
// ...error handling
以及使用
firstarray
的代码可以保持不变。
关于c - 将多维数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58924446/