我正在尝试为我指定的矩阵添加值,但是有一个不变的faliure和visual studio会出现错误并停止运行。 可以问我的问题是什么?
'#include <stdio.h>
#include <stdlib.h>
void scanMath(int,int,int);
void main()
{
int i,n,m,**arr;
printf("enter the size of the rows\n");
scanf("%d",&n);
printf("enter the size of the coloms\n");
scanf("%d",&m);
arr=(int**)malloc(n*sizeof(int*));
for (i=0;i<n;i++)
{
arr[i]=(int*)malloc(m*sizeof(int));
}
scanMath(arr[n][m],n,m);
free(arr);
}
void scanMath(int arr,int R,int C)
{
int i,j;
for (i=0; i<R; i++)
{
for (j=0; j<C; j++)
{
scanf("%d", &arr[i][j]);
}
}
}
'
答案 0 :(得分:2)
#include <stdio.h>
#include <stdlib.h>
void scanMath(int **,int,int);
int main()
{
int i,n,m,**arr;
printf("enter the size of the rows\n");
scanf("%d",&n);
printf("enter the size of the coloms\n");
scanf("%d",&m);
arr=(int**)malloc(n*sizeof(int*));
for (i=0;i<n;i++)
{
arr[i]=(int*)malloc(m*sizeof(int));
}
scanMath(arr,n,m);
free(arr);
}
void scanMath(int **arr,int R,int C)
{
int i,j;
for (i=0; i<R; i++)
{
for (j=0; j<C; j++)
{
scanf("%d", &arr[i][j]);
}
}
}
你去吧。由于您将其声明为int **arr
,并且原型是相同的,因此仅传递变量名就足够了。
答案 1 :(得分:1)
您应该将该功能称为
scanMath(arr, n, m);
因为该函数接受int **
。传递arr[m][n]
将只传递一个元素,也超出了分配的范围。