无法将值输入到指定的矩阵中

时间:2013-06-12 15:30:02

标签: c malloc

我正在尝试为我指定的矩阵添加值,但是有一个不变的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]);
        }
    }
}
    '

2 个答案:

答案 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]将只传递一个元素,也超出了分配的范围。