Форум программистов, компьютерный форум CyberForum.ru

Warning C4700: использована неинициализированная локальная переменная "matrix" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 82, средняя оценка - 4.98
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
23.09.2010, 11:25     Warning C4700: использована неинициализированная локальная переменная "matrix" #1
тогда еще 1 вопрос:

при попытке реализовать чтение из файла в виде функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <fstream>
#include <iostream>
#include <tchar.h>
#include <math.h>
#include <stdio.h>
#include <iomanip>
 
using namespace std;
 
double** read(double **mas, int &n)
{
ifstream in("file.txt");
if(in==NULL) cout<<"Cannot open file."<<endl;
in>>n;
for(int i=0; i<n; i++)
{
 
    mas[i]=new double [n+1];
}
for(int i=0; i<n; i++)
    for(int j=0; j<=n; j++)
    {
        in>>mas[i][j];
    }
in.close();
return mas;
}
 
int main()
{
int n;
double **matrix;
matrix=read(matrix, n);
}
вылазит предупреждение: d:\c++\project1\1\2.cpp(33) : warning C4700: использована неинициализированная локальная переменная "matrix"

и при компиляции кода, вылазит ошибка:
debug error!
...
Run-Time check Failure #3 - The veriable 'matrix' is being used withaut being initialized.
...

Что у меня не так? Или по-другому лучше сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2010, 11:25     Warning C4700: использована неинициализированная локальная переменная "matrix"
Посмотрите здесь:

C++ Warning C4700: использована неинициализированная локальная переменная
Error C4700: использована неинициализированная локальная переменная C++
C++ Error C4700: использована неинициализированная локальная переменная "k"
Использована неинициализированная локальная переменная C++
C++ Warning C4700: использована неинициализированная локальная переменная
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
23.09.2010, 11:30     Warning C4700: использована неинициализированная локальная переменная "matrix" #2
C++
1
double **matrix = null;
Один вопрос - одна тема
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
23.09.2010, 11:33     Warning C4700: использована неинициализированная локальная переменная "matrix" #3
В функции read нет выделения памяти для mas, сразу запись в mas[i].
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
23.09.2010, 11:50  [ТС]     Warning C4700: использована неинициализированная локальная переменная "matrix" #4
Цитата Сообщение от M128K145 Посмотреть сообщение
C++
1
double **matrix = null;
Один вопрос - одна тема
прошу прощения.

Somebody. спасибо, исправил теперь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <fstream>
#include <iostream>
#include <tchar.h>
#include <math.h>
#include <stdio.h>
#include <iomanip>
 
using namespace std;
 
void echo(double **mas,int n)
{
 cout<<endl<<n<<endl;
  for(int i=0;i<n;i++)
   {
    for(int j=0;j<=n;j++) cout<<mas[i][j]<<" ";
    cout<<endl;
   }
}
 
double** read(int &n)
{
 
ifstream in("file.txt");
if(in==NULL) cout<<"Cannot open file."<<endl;
in>>n;
 
double **mas=new double* [n];
for(int i=0; i<n; i++)
{
 
    mas[i]=new double [n+1];
}
 
for(int i=0; i<n; i++)
    for(int j=0; j<=n; j++)
    {
        in>>mas[i][j];
    }
in.close();
return mas;
}
 
int main()
{
    int n;
 
double **mas;
mas=read(n);
 
echo(mas, n);
 
 
}
а как лучше сделать? или так нормально.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
23.09.2010, 12:08     Warning C4700: использована неинициализированная локальная переменная "matrix" #5
Нормально, только потом delete надо для всего этого. А вообще можно std::vector использовать.
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
23.09.2010, 12:13  [ТС]     Warning C4700: использована неинициализированная локальная переменная "matrix" #6
спс, просто учусь сразу делать правильно. а то получится как с php.
Yandex
Объявления
23.09.2010, 12:13     Warning C4700: использована неинициализированная локальная переменная "matrix"
Ответ Создать тему
Опции темы

Текущее время: 14:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru