我对下面这段代码有些问题。
它是一个将多维数组的内容复制到另一个多维数组的函数。
代码如下:

#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/

10-14 06:40