在C中定义一个函数从用户处获取2D矩阵的元素
我无法完成这段代码,请帮帮我!我必须修改矩阵,程序读取函数中的矩阵项在C中定义一个函数从用户处获取2D矩阵的元素,c,function,matrix,C,Function,Matrix,我无法完成这段代码,请帮帮我!我必须修改矩阵,程序读取函数中的矩阵项 int main(int argc, char *argv[]) { int r1,c1; printf("Enter dimension of first matrix :"); scanf("%d %d",&r1,&c1); int m1[r1][c1]; GetArray(m1,r1,c1); system("PAUSE"); return 0; } v
int main(int argc, char *argv[])
{
int r1,c1;
printf("Enter dimension of first matrix :");
scanf("%d %d",&r1,&c1);
int m1[r1][c1];
GetArray(m1,r1,c1);
system("PAUSE");
return 0;
}
void GetArray(int arr[][],int _row,int _column)
{
int i,j,num;
printf("Enter number: ");
for(i==0;i<_row;i++){
for(j==0;j< _column;j++){
scanf("%d",&num);
arr[i][j]=num;}} //give error in this line
}
intmain(intargc,char*argv[])
{
int r1,c1;
printf(“输入第一个矩阵的维数:”);
scanf(“%d%d”、&r1和&c1);
int m1[r1][c1];
GetArray(m1,r1,c1);
系统(“暂停”);
返回0;
}
void GetArray(int arr[]],int行,int列)
{
int i,j,num;
printf(“输入编号:”);
对于(i==0;i在C编程中,==
用于比较,=
用于赋值操作。您肯定希望在中为循环的和i
赋值。在您的情况下,您没有初始化循环变量(当您在函数开头声明它们时)由于它们在未初始化时会得到垃圾值,因此您试图超出在for
循环中使用的数组的边界,从而导致分段错误。int main(int argc,char*argv[])
int main(int argc, char *argv[])
{
int r1,c1;
printf("Enter dimension of first matrix :");
scanf("%d %d",&r1,&c1);
int **m1;
for(int i = 0; i<r1 ;++i) // use c99 !
m1[i] = malloc(c1* sizeof(int));
GetArray(m1,r1,c1);
system("PAUSE");
for(int i = 0; i<r1 ;++i)
free(m1[i]);
return 0;
}
void GetArray(int ** m1,int _row,int _column)
{
int i,j,num;
printf("Enter number: ");
for(i=0;i<_row;i++){
for(j=0;j< _column;j++){
scanf("%d",&num);
m1[i][j]=num;}} //give error in this line
}
{
int r1,c1;
printf(“输入第一个矩阵的维数:”);
scanf(“%d%d”、&r1和&c1);
整数**m1;
对于(int i=0;i您确实意识到,=
检查相等性,=
是赋值,这就是您想要的。int m1[r1][c1]
你看,你不能用从键盘读取的r1
和c1
来实现这一点。你需要动态地分配m1
。或者给m1一个比从键盘输入的值大的固定大小,并声明r1和c1静态常量。谢谢回答==是我的疏忽。主要问题是我必须初始化函数中数组的第二维,如void GetArray(int arr[][3],int _row,int _column)噢,我忘了提到它。是的,你还必须指定第二维。如果我能帮忙,我很高兴:)