user-0 提问: 又是C编译报错

回复:
user: user-0
content: 引用 5 楼 赵4老师的回复:请那些喜欢将数组作为函数参数传来传去或作为函数返回值的码农思考一下为什么不把整个互联网内容当作函数参数传来传去或作为函数返回值呢？ 那为何，结构也可以作为函数参数传递呢，虽然结构指针更快但是可能会改变原始数据，而传递结构虽然慢一些，但是函数处理的是结构的一个副本，就比直接处理原始数据安全，而相对于互联网，我更倾向于用指针

user: user-1
content: 引用 7 楼 JILAU_WHO_AM_I_Q234 的回复:可是这个列数已经定死了 100，我想写的是对于任意大小的二维数组 一个解决方案应该是用二维指针吧

user: user-0
content: 引用 3 楼 自信男孩的回复:#include <stdio.h> #include <stdlib.h>  #define ROW     100 #define COL     100  void copy_arr(int m,int n,const double (*arr)[COL],double (*arr1)[COL]); void arr_show(int m,int n,const double (*arr)[COL],const double (*arr1)[COL]); int main(void) {     int m,n;     printf("请输入两个整数：");     scanf("%d%d",&m,&n);     double array[ROW][COL];     for(int i=0;i<m;i++)         for(int j=0;j<n;j++)             array[i][j] = 0.0;     double array1[ROW][COL];     copy_arr(m,n,array,array1);     arr_show(m,n,array,array1);     system("pause");     return 0; } void copy_arr(int m,int n,const double (*arr)[COL],double (*arr1)[COL]) {     for(int i = 0;i<m;i++)     {         for(int j = 0;j<n;j++)         arr1[i][j] = arr[i][j];     } } void arr_show(int m,int n,const double (*arr)[COL],const double (*arr1)[COL]) {     printf("array[%d][%d]:    array1[%d][%d]:",m,n,m,n);     for(int i=0;i<m;i++)     {         for(int j=0;j<n;j++)         {             printf("%f    %f",arr[i][j],arr1[i][j]);         }     } } 二维数据作为形参时，至少列数需要告知，即是一个确定值。 以上的代码参考一下吧 可是这个列数已经定死了 100，我想写的是对于任意大小的二维数组

user: user-0
content: 引用 2 楼 verphan的回复: int m,n;     printf("请输入两个整数：");     scanf("%d%d",&m,&n);     double array[m][n]; 我认为上面这一段都会出错，m,n是变量，用来创建数组应该通不过的，可是测试却可以，不懂。求解答。 void copy_arr(int m,int n,const double arr[m][n],double arr1[m][n]); 函数传入数组参数，使用变量作为维度应该不被允许，应该要用常量，但这方面我也不熟不知道怎么改 copy_arr(m,n,array[][],array1[][]); 调用函数时只要写数组名就行了，像下面这样： copy_arr(m,n,array,array1); c99已经支持变长数组了，所以可以用变量

user: user-2
content: 请那些喜欢将数组作为函数参数传来传去或作为函数返回值的码农思考一下为什么不把整个互联网内容当作函数参数传来传去或作为函数返回值呢？

user: user-1
content: 引用 1 楼 hdt 的回复:我记得c多维数组做参数，必须给定最后一维大小 编译器提示除了第一维，其他维度大小都要给出

user: user-3
content: #include <stdio.h> #include <stdlib.h>  #define ROW     100 #define COL     100  void copy_arr(int m,int n,const double (*arr)[COL],double (*arr1)[COL]); void arr_show(int m,int n,const double (*arr)[COL],const double (*arr1)[COL]); int main(void) {     int m,n;     printf("请输入两个整数：");     scanf("%d%d",&m,&n);     double array[ROW][COL];     for(int i=0;i<m;i++)         for(int j=0;j<n;j++)             array[i][j] = 0.0;     double array1[ROW][COL];     copy_arr(m,n,array,array1);     arr_show(m,n,array,array1);     system("pause");     return 0; } void copy_arr(int m,int n,const double (*arr)[COL],double (*arr1)[COL]) {     for(int i = 0;i<m;i++)     {         for(int j = 0;j<n;j++)         arr1[i][j] = arr[i][j];     } } void arr_show(int m,int n,const double (*arr)[COL],const double (*arr1)[COL]) {     printf("array[%d][%d]:    array1[%d][%d]:",m,n,m,n);     for(int i=0;i<m;i++)     {         for(int j=0;j<n;j++)         {             printf("%f    %f",arr[i][j],arr1[i][j]);         }     } } 二维数据作为形参时，至少列数需要告知，即是一个确定值。 以上的代码参考一下吧

user: user-1
content: int m,n;     printf("请输入两个整数：");     scanf("%d%d",&m,&n);     double array[m][n]; 我认为上面这一段都会出错，m,n是变量，用来创建数组应该通不过的，可是测试却可以，不懂。求解答。 void copy_arr(int m,int n,const double arr[m][n],double arr1[m][n]); 函数传入数组参数，使用变量作为维度应该不被允许，应该要用常量，但这方面我也不熟不知道怎么改 copy_arr(m,n,array[][],array1[][]); 调用函数时只要写数组名就行了，像下面这样： copy_arr(m,n,array,array1);

user: user-4
content: 我记得c多维数组做参数，必须给定最后一维大小