c ++:变量' n'正在使用而未初始化

时间:2015-01-08 12:46:17

标签: c++

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void citire(float a[][20], int *m, int *n)
{
    int i, j;
    printf("nr linii="); scanf("%d", m);
    printf("nr linii="); scanf("%d", n);
    for (i = 0; i<*m; i++)
        for (j = 0; j<*n; j++)
        {
            printf("a(%d,%d)=", i, j);
            scanf("%f", &a[i][j]);
        }
}
int main()
{
    float b[20][20];
    int *m, *n;
    citire(b, m, n);
    getch();
}

我有一个错误:正在使用变量'n'而不进行初始化。我也试图删除“*”请帮忙! 我该如何解决?

4 个答案:

答案 0 :(得分:2)

  

变量&#39; n&#39;正在使用而未初始化。我该如何解决?

您初始化变量。

int *m = new int;
int *n = new int;
citire(b, m, n);
delete m;
delete n;

但可能你希望它更简单:

int m = 0;
int n = 0;
citire(b, &m, &n);

或许,你甚至根本不需要它们:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void citire(float a[][20])
{
    int i, j;
    int m, n;
    printf("nr linii="); scanf("%d", &m);
    printf("nr linii="); scanf("%d", &n);
    for (i = 0; i<m; i++)
        for (j = 0; j<n; j++)
        {
            printf("a(%d,%d)=", i, j);
            scanf("%f", &a[i][j]);
        }
}

int main()
{
    float b[20][20];
    citire(b);
    getch();
}

答案 1 :(得分:0)

scanf("%d", n);

您没有为n分配内存。您应该在调用者中分配内存,然后将该指针传递给此函数。

答案 2 :(得分:0)

不确定为什么要在函数外部创建一个指针,然后将其传递给....

但是你正在填充指针的值,而不是指针所指向的值。实际上你从未为n分配内存。 n需要指向有效的内存,然后需要填入

你还真的在使用C ++吗?如果是这样,为什么你使用scanf?你应该使用流

答案 3 :(得分:0)

你得到这个错误的原因是你将m和n声明为指针,因此你需要在使用之前为它们分配空间。

根据需要,您需要更改读取函数以将引用作为参数,并且可以将m和n声明为正常的整数:

int m, n
void citire(float a[][20],int& m, int& n);