【发布时间】:2016-02-11 19:01:53
【问题描述】:
void sort(int [],int);
这就是我通常在函数声明语句中使用一维数组(即:int [])的方式,用于排序等程序,它可以正常工作,没有任何问题
但是对于我的矩阵加法程序,当我在具有类似格式void mat(int [][],int [][],int ,int);
Iam 的函数声明语句中使用二维数组(即:int [][])时,我会收到一些错误消息,例如:-
1.多维数组除了第一个维度外,所有维度都必须有边界。
2.从 'int (*)[10]' 到 'int' [-fpermissive] 的无效转换。
所以我的问题是如何在函数声明语句中编写二维数组。
下面我附上了使用函数的完整矩阵添加程序:-
#include<stdio.h>
void mat(int [][],int [][],int ,int);
int main()
{
int a[10][10],b[10][10],m,n,i,j;
printf("Enter the rows and coloumns: ");
scanf("%d %d",&m,&n);
printf("\nEnter the elements of 1st Matrix:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("\nEnter the elements of the 2nd Matrix:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
mat(a,b,m,n);
}
void mat(int a[10][10],int b[10][10],int m,int n)
{
int i,j,c[10][10];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c[i][j]=a[i][j]+b[i][j];
printf("\nThe addition of the 2 Matrix is :");
for(i=0;i<m;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d",c[i][j]);
}
}
【问题讨论】:
-
函数原型应该是函数定义的复制/粘贴,末尾加上分号。
-
没有函数原型将只有数据类型,而函数定义将同时具有变量名称的数据类型
-
C 中没有二维(或更高)维数组。相反,您可以拥有数组的数组,这不一样。
-
@SairamD 如果你愿意,你可以选择这样做,但最终你会意识到为什么这是一个糟糕的选择。
标签: c arrays function multidimensional-array