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

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

Войти
Регистрация
Восстановить пароль
 
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
#1

массив - C++

21.04.2011, 09:52. Просмотров 531. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
cout<<"Enter n:"<<endl;
        int n;
        cin>>n;
        cout<<"Enter m:"<<endl;
        int m;
        cin>>m;
 
        int** M=new int*[n];
        int i;
        for(i=0; i<n; i++)
        {
                M[i]=new int[m];
        }
поясните чайнику что значит int** M=new int*[n];
C++
1
2
3
4
5
        int i;
        for(i=0; i<n; i++)
        {
                M[i]=new int[m];
        }
что за int** M на что она ссылается и на что ссылается new int*[n] и зачем тут операция присвоения
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2011, 09:52     массив
Посмотрите здесь:

C++ Заполнить массив A и массив B нулями
Условие умножение массив на массив(матрицы) C++
C++ вставить массив в массив по индексу
C++ слить массив А и В по 100 элементов в массив С из 200 элементов так,чтобы элементы А и В чередовались по 10 в c++
Многомерный массив и массив массивов C++
вывод указателя на массив на массив C++
Передать массив I в массив J в обратной последовательности C++
Строковый массив в int массив C++
C++ Ссылка на массив и внутренний массив
C++ Скопировать массив в массив по условию
C++ Массив указателей на символьный массив
Из заданного массива C записать в массив А чётные положительные элементы, а в массив В нечётные отрицательные C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
21.04.2011, 10:50     массив #2
Цитата Сообщение от .Malek. Посмотреть сообщение
поясните чайнику что значит int** M=new int*[n];
Динамическое выделение памяти
Цитата Сообщение от .Malek. Посмотреть сообщение
что за int** M на что она ссылается и на что ссылается new int*[n] и зачем тут операция присвоения
int ** - этой указатель на указатель типа int. То есть M - это массив указателей. Для каждого из этих указателей так же выделяется память, и каждый из этих указателей в свою очередь ссылается на участок памяти.
В общем здесь происходит динамическое выделение памяти для матрицы.
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
21.04.2011, 10:55  [ТС]     массив #3
т.е. если взять для примера матрицу
123
456
789
то операцией new int*[n] мы выделяем память для столбца 147 и присваиваем М?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
21.04.2011, 11:17     массив #4
Цитата Сообщение от .Malek. Посмотреть сообщение
то операцией new int*[n] мы выделяем память для столбца 147 и присваиваем М?
вообще так выделяется память под любой массив. и в случае, если этот массив часть матрицы то это будет строка, а не столбец.
В общем взгляни на картинку.
массив
Сначала имеется указатель int **M. Он ни на что не указывает, следовательно пока что он не валиден. Затем к нему применяется операция new int *[n]. Здесь выделяется память на массив указателей типа int. Указатель `M' теперь указывает именно на этот массив. Каждый из указателей в массиве M[0], M[1] ... M[n-1] пока еще не валиден. На следующем этапе в цикле выделяется память для каждого из этих указателей. То есть в итоге получается, что M - это массив массивов. В общем на картинке я думаю это все более понятно будет, чем на словах.
И очень важно очищать память после использования. В порядке обратном выделению, то есть сначала для каждого M[i], а потом для M.
Yandex
Объявления
21.04.2011, 11:17     массив
Ответ Создать тему
Опции темы

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