#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'而不进行初始化。我也试图删除“*”请帮忙! 我该如何解决?
答案 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);