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

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

Войти
Регистрация
Восстановить пароль
 
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
#1

Определение переменной внутри цикла - C++

02.10.2012, 17:22. Просмотров 562. Ответов 9
Метки нет (Все метки)

Кусочек кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
#include <fstream> 
 
int main() 
{ 
    const int size = 3; 
    int j = 0;
    int i = 0;
 
    /*int** matrix = new int*[size];  // здесь ошибка 
    for ( i = 0; i < size; i++) 
        matrix[i] = new int[size];*/
    int **matrix = new int *[size]; // это верно
      for (int i=0;i<size;i++)
        matrix[i]= new int [size];
ясно, что ошибка из за переменной i, но как-то я этот момент упустил в процессе обучения.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
02.10.2012, 17:28     Определение переменной внутри цикла #2
Вы в 15 строке переопределили переменную i.

Надо так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
#include <fstream> 
 
int main() 
{ 
    const int size = 3; 
    int j = 0;
    int i = 0;
 
    /*int** matrix = new int*[size];   
    for ( i = 0; i < size; i++) 
        matrix[i] = new int[size];*/
    int **matrix = new int *[size]; // это верно
      for (i=0;i<size;i++) 
        matrix[i]= new int [size];
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 17:29  [ТС]     Определение переменной внутри цикла #3
Цитата Сообщение от programmer_11 Посмотреть сообщение
Вы в 15 строке переопределили переменную i.
это я понял. Почему так нельзя?
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
02.10.2012, 17:34     Определение переменной внутри цикла #4
Переменная i локальна к функции main(). А переменную с имемем i только можно определить в каком-то блоке в функции main().

C++
1
2
3
4
5
6
7
int main()
{
int i=0;
{
int i=6;
}
}
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
02.10.2012, 17:40     Определение переменной внутри цикла #5
David Sylva, не вижу ошибки. Предупреждение может быть и будет, но не ошибка
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 17:42  [ТС]     Определение переменной внутри цикла #6
Цитата Сообщение от I.M. Посмотреть сообщение
David Sylva, не вижу ошибки
Компилируется нормально. При запуске косяк.
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
02.10.2012, 17:44     Определение переменной внутри цикла #7
Наверное David Sylva работает в Visual c++ 6, кототрый не поддерживает новых стандартов, согласно которым переменная, обявленная в заголовке цикла, является локальной к циклу.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 17:53  [ТС]     Определение переменной внутри цикла #8
Цитата Сообщение от programmer_11 Посмотреть сообщение
Наверное David Sylva работает в Visual c++ 6, кототрый не поддерживает новых стандартов, согласно которым переменная, обявленная в заголовке цикла, является локальной к циклу.
Нет у меня Студия 10

Добавлено через 5 минут
Ладно осознал, что спросил глупость. Просто думал, что здесь есть более глубокий смысл, чем область видимости.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6346 / 2993 / 295
Регистрация: 04.12.2011
Сообщений: 8,027
Записей в блоге: 3
02.10.2012, 18:10     Определение переменной внутри цикла #9
С Вашими библиотеками (для интереса) на 2010Express компилируется и работает:
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
#include <iostream>
#include <iomanip>
#include <fstream> 
int main() 
{ 
    const int size = 3; 
    int j = 0;
    int i = 0;
     int** matrix = new int*[size];  // здесь НЕ ошибка 
    for ( i = 0; i < size; i++) 
        matrix[i] = new int[size];
   /* int **matrix = new int *[size]; // это верно
      for (int i=0;i<size;i++)
        matrix[i]= new int [size]; */
for ( i = 0; i < size; i++) {
for ( j = 0; j < size; j++) {
        matrix[i][j] = i+j;
std::cout<<"\ni= "<<i<<" "<<matrix[i][j];
}
}
std::cout<<"\n";
std::system("pause");
      return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2012, 18:19     Определение переменной внутри цикла
Еще ссылки по теме:

C++ Локальная переменная внутри цикла
C++ Значение переменной после окончания цикла
Остановиться внутри цикла C++
C++ Функции внутри цикла не выполняются
C++ Преобразование слов из string в тип char внутри цикла

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

Или воспользуйтесь поиском по форуму:
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 18:19  [ТС]     Определение переменной внутри цикла #10
Правильно всё работает. Переклинило не много.
Yandex
Объявления
02.10.2012, 18:19     Определение переменной внутри цикла
Ответ Создать тему
Опции темы

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