我对下面这段代码有些问题。
它是一个将多维数组的内容复制到另一个多维数组的函数。
代码如下:
#include<stdio.h>
void copyarray(int ros,int cos,double ard[][cos] ,double arf[][cos]);
int main(){
int rows,columns;
printf("Enter number of rows\n ");
scanf("%d",&rows);
printf("Enter number of columns\n");
scanf("%d",&columns);
double ar[rows][columns];
double ar1[rows][columns];
printf("Enter the elements ");
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++){
scanf("%lf",&ar[i][j]);
}
}
printf("The 2d array is :\n");
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++){
printf("%lf ",ar[i][j]);
}
printf("\n");
}
copyarray(rows,columns,ar,ar1);
return 0;
}
void copyarray(int r,int c,double ar[r][c],double arr1[r][c]){
for(int j=0;j<r;j++){
for(int i=0;i<size;i++){
arr1[j][i]=ar[j][i];
}
}
printf("The new array has the following elements:\n");
for(int j=0;j<r;j++){
for(int i=0;i<size;i++){
printf("%lf ",arr1[j][i]);
}
printf("\n");
}
}
我得到以下错误:
“在函数体外部使用参数'cos'”
有人能帮我解决这个问题吗?
谢谢
最佳答案
你有
void copyarray(int ros,int cos,double ard[][cos] ,double arf[][cos]);
那就是
type function_name(type arg_name_1,
type arg_name_2,
type array_name_1[][arg_name_2],
type array_name_2[][arg_name_2]);
在C99之前,不能在函数声明中使用参数(在本例中为
arg_name_2
)。这个错误是指在array_name_2[][arg_name_2]
中使用它是“在函数体之外”。然而,如HostileFork所述,如果您使用的编译器遵循C99标准(或更高版本),则可以执行此操作。
关于c - C中的多维数组原型(prototype)错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26107064/