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

С++ для начинающих

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

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

23.09.2010, 11:25. Просмотров 10775. Ответов 5
Метки нет (Все метки)

тогда еще 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++ Ошибка со структурой - "использована неинициализированная локальная переменная"
C++ Warning C4700: использована неинициализированная локальная переменная
Error C4700: использована неинициализированная локальная переменная C++
Ошибка в коде: "использована неинициализированная локальная переменная" C++
Функция PTinqpoint() и ошибка "Использована неинициализированная локальная переменная" C++
C++ Error C4700: использована неинициализированная локальная переменная "k"
C++ "Использована неинициализированная локальная переменная" при работе с указателем
C++ Warning C4700: использована неинициализированная локальная переменная
Найти причины и способы исправления ошибки C4700: "использована неинициализированная локальная переменная" C++
C++ Ошибка "error C4700: использована неинициализированная локальная переменная"
Как исправить: warning C4700: использована неинициализированная локальная переменная "a"? C++
Ошибка "Использована неинициализированная локальная переменная" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
23.09.2010, 11:30     Warning C4700: использована неинициализированная локальная переменная "matrix" #2
C++
1
double **matrix = null;
Один вопрос - одна тема
Somebody
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 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
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 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"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru