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

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

Восстановить пароль Регистрация
 
Vahram1995
 Аватар для Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
20.01.2013, 17:35     Указатели и массивы #1
Привет всем. Объясните пожалуйста
int* v[i];
int**v;
Чем они эквивалентны?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 17:35     Указатели и массивы
Посмотрите здесь:

C++ Указатели и массивы
C++ Указатели и массивы.
массивы указателей,указатели на массивы C++
C++ массивы указателей,указатели на массивы
Массивы и указатели C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
20.01.2013, 17:40     Указатели и массивы #2
Фактически, динамический массив является указателем.
В первом случае это массив указателей, во втором указатель на указатель (что может спокойно оказаться двумерным массивом, а может и не оказаться).
Vahram1995
 Аватар для Vahram1995
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 74
20.01.2013, 17:55  [ТС]     Указатели и массивы #3
А можете объяснить как указатель на указатель может стать двумерным массивом?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,832
Записей в блоге: 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
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
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++ Массивы, указатели с++

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

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

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