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

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

Восстановить пароль Регистрация
 
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
02.10.2012, 17:22     Определение переменной внутри цикла #1
Кусочек кода
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, но как-то я этот момент упустил в процессе обучения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 17:22     Определение переменной внутри цикла
Посмотрите здесь:

Цикл внутри цикла C++
Не увеличивается значение внутри цикла C++
Таймер ожидания внутри цикла C++
Объявление переменной внутри цикла while C++
C++ Локальная переменная внутри цикла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
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
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
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
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
02.10.2012, 17:53  [ТС]     Определение переменной внутри цикла #8
Цитата Сообщение от programmer_11 Посмотреть сообщение
Наверное David Sylva работает в Visual c++ 6, кототрый не поддерживает новых стандартов, согласно которым переменная, обявленная в заголовке цикла, является локальной к циклу.
Нет у меня Студия 10

Добавлено через 5 минут
Ладно осознал, что спросил глупость. Просто думал, что здесь есть более глубокий смысл, чем область видимости.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 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++
Применение цикла if для определения простых чисел. If внутри цикла for C++
C++ Функции внутри цикла не выполняются

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

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

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