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

указатели - C++

Восстановить пароль Регистрация
 
spezialist
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 22
26.02.2014, 17:15     указатели #1
Вот собственно код, проблема в том что я непойму как он работает, что именно непонятно указал в комментариях

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
unsigned char ** tipoTerreno, **estaticos;//создается что, массив указателей?
unsigned short ** elevacion;
 
 
for (int m = 0; m < d1; m++) {
        tipoTerreno[m] = new unsigned char [d2];//а это что такое? создание двумерного массива?
        elevacion[m] = new unsigned short [d2];
        estaticos[m] = new unsigned char [d2];
        for (int n = 0; n < d2; n++) {
            tipoTerreno[m][n] = 1;
            elevacion[m][n] = 100;
            estaticos[m][n] = 1;
            cout << n << endl;
        }
    }
да и если это проста такой синтаксис создание двумерных массивов, то почему просто не созданть вот так?:
тип переменная[10][10];
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 17:15     указатели
Посмотрите здесь:

C++ Указатели
Указатели.... C++
Указатели. C++
Указатели C++
Указатели C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
26.02.2014, 17:25     указатели #2
unsigned char ** tipoTerreno, **estaticos;//создается что, массив указателей?
Указатель на массив указателей.
for (int m = 0; m < d1; m++) {
tipoTerreno[m] = new unsigned char [d2];//а это что такое? создание двумерного массива?
Дабы создать "двумерность", каждый указатель массива (ведь у Вас массив указателей) теперь будет указывать еще на массив.
Сложно объяснить корректно... Почитайте про то, что такое "куча" и что такое "динамические двумерные массивы".

Добавлено через 1 минуту
Цитата Сообщение от spezialist Посмотреть сообщение
тип переменная[10][10];
А это создание статического массива.
spezialist
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 22
26.02.2014, 19:01  [ТС]     указатели #3
я извеняюсь, код не полноценно отобразился, чтобы не ввести в заблуждения того кто будет это читать, возможно для обучение выложу оригинал

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
unsigned char ** tipoTerreno, **estaticos;
    unsigned short ** elevacion;
 
    tipoTerreno = new unsigned char * [d1];
    elevacion = new unsigned short * [d1];
    estaticos = new unsigned char * [d1];
 
    for (int m = 0; m < d1; m++) {
        tipoTerreno[m] = new unsigned char [d2];
        elevacion[m] = new unsigned short [d2];
        estaticos[m] = new unsigned char [d2];
        for (int n = 0; n < d2; n++) {
            tipoTerreno[m][n] = 1;
            elevacion[m][n] = 100;
            estaticos[m][n] = 1;
        }
    }
unsigned char ** tipoTerreno, **estaticos;//создается что, массив указателей?
значит как я понял это указатель на указатель

tipoTerreno = new unsigned char * [d1];
elevacion = new unsigned short * [d1];
estaticos = new unsigned char * [d1];
теперь, это указатель на динамические массивы указателей

for (int m = 0; m < d1; m++) {
tipoTerreno[m] = new unsigned char [d2];
elevacion[m] = new unsigned short [d2];
estaticos[m] = new unsigned char [d2];
и собственно теперь, динамические массивы указателей указывают на динамические массивы базовых типов.

надеюсь я правильно осмыслил тему, если нет подправте
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
26.02.2014, 19:08     указатели #4
Заумно написали но вроде верно.Тамика права.
Но от себя добавлю динамический вектор (одномерный массив) реализуется через указатель и выделение памяти например:
Цитата Сообщение от spezialist Посмотреть сообщение
tipoTerreno = new unsigned char * [d1];
двухмерный массив это массив динамических векторов (массив указателей и выделения памяти):
Цитата Сообщение от spezialist Посмотреть сообщение
unsigned char ** tipoTerreno;
tipoTerreno = new unsigned char * [d1];
мудрёно, но когда привыкнешь по другому противоестественно казаться будет (знаю о чем говорю после Delphi и Vb)...
Yandex
Объявления
26.02.2014, 19:08     указатели
Ответ Создать тему
Опции темы

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