0

我正在尝试将值添加到我分配的矩阵,但有一个恒定的故障,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]);
        }
    }
}
    '
4

2 回答 2

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,并且原型相同,因此只需传递变量名就足够了。

于 2013-06-12T15:40:53.180 回答
1

您应该将该函数称为

scanMath(arr, n, m);

因为函数接受int **. 传递arr[m][n]只会传递一个元素,它也超出了分配的范围。

于 2013-06-12T15:40:46.680 回答