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

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

Войти
Регистрация
Восстановить пароль
 
Vahram1995
 Аватар для Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
#1

Указатели и массивы - C++

20.01.2013, 17:35. Просмотров 317. Ответов 6
Метки нет (Все метки)

Привет всем. Объясните пожалуйста
int* v[i];
int**v;
Чем они эквивалентны?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
20.01.2013, 17:40     Указатели и массивы #2
Фактически, динамический массив является указателем.
В первом случае это массив указателей, во втором указатель на указатель (что может спокойно оказаться двумерным массивом, а может и не оказаться).
Vahram1995
 Аватар для Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
20.01.2013, 17:55  [ТС]     Указатели и массивы #3
А можете объяснить как указатель на указатель может стать двумерным массивом?
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12520 / 7082 / 797
Регистрация: 27.09.2012
Сообщений: 17,490
Записей в блоге: 2
Завершенные тесты: 1
20.01.2013, 18:00     Указатели и массивы #4
C++
1
2
3
4
5
6
7
8
9
10
    int N=100;
    int ** arr;
    //Создание arr[N][N]
    arr=new int*[N];
    for(int i=0;i<N;++i)
        arr[i]=new int[N];
    //Удаление  arr[N][N]
    for(int i=0;i<N;++i)
        delete [] arr[i];
    delete [] arr;
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
20.01.2013, 18:04     Указатели и массивы #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
    int M, N, **a;
    std::cin >> M >> N;
    a = new int *[M]; // в a выделяем память под массив указателей на int размером M. **a становится *a[M]
    for (int i=0; i < M; i++) // для каждого элемента из массива *a (имею тип int *)
        a[i] = new int[N]; // выделяем память под N чисел типа int. **a становится a[M][N];
 
    for (int i=0; i < M; i++) // освобождаем память в обратном порядке
        delete []a[i];
    delete []a;
}
Vahram1995
 Аватар для Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
20.01.2013, 18:27  [ТС]     Указатели и массивы #6
Почему именно указатель (массив указателей) должен вывести динамическую память для массива (двумерного массива)?
Я много видел этот код, но работу указателей не понимаю.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2013, 18:32     Указатели и массивы
Еще ссылки по теме:

C++ Указатели и массивы
C++ Массивы и указатели.
C++ Оператор if. Указатели на массивы
C++ Указатели и массивы
Массивы и указатели C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
20.01.2013, 18:32     Указатели и массивы #7
Vahram1995, что такое указатель? Это переменная, которая показывает на участок памяти, где хранятся нужные нам данные. При использовании динамического массива, мы в переменную записываем адрес, откуда начинается запись элементов массива один за другим.
Если вы не понимаете до конца смысла указателей, лучше освойте это, прежде чем пробовать осилить динамические массивы.
Yandex
Объявления
20.01.2013, 18:32     Указатели и массивы
Ответ Создать тему
Опции темы

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