Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
spezialist
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 22
#1

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

26.02.2014, 17:15. Просмотров 219. Ответов 3
Метки нет (Все метки)

Вот собственно код, проблема в том что я непойму как он работает, что именно непонятно указал в комментариях

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];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 17:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос указатели (C++):

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Через указатели на указатели посчитать сумму двух чисел и записать в третье - C++
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов? - C++
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;// выделил для первой строки матрицы два...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной - C++
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; void min_max(int*pa, int*pb,...

Отсортировать массив и вывести на экран (массивы и указатели на указатели) - C++
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F студента. Отсортировать массив S по...

Написать программу сортировки через указатели на указатели - C++
Вот моя программа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; //Сортировка &quot;пузырьком&quot;. ...

3
Тамика
Котовчанин
918 / 462 / 145
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 28
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];
А это создание статического массива.
1
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];
и собственно теперь, динамические массивы указателей указывают на динамические массивы базовых типов.

надеюсь я правильно осмыслил тему, если нет подправте
0
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)...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 19:08
Привет! Вот еще темы с ответами:

Указатели на слонов или А зачем нужны указатели? - C++
Знаю что таких вопросов было уйма, но я так и не нашел ответа на свой вопрос. Для чего нужны указатели? Что такое указатели я знаю, это...

Используются ли на практике указатели на указатели объектов? - C++
Имеются ввиду указатели именно на объекты, а не динамические массивы. Например такой: Object** obj; А как насчёт такого: Object***...

Указатели на массивы. Указатели и функции - C++
Вот задача: Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать: -Элементы обоих массивов; -Общие...

Константные указатели и указатели на константу - C++
Чем они, собственно говоря, отличаются? Поясните, пожалуйста. Не знаю, как так получилось, что в разных источниках - разные...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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