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

Указатель на указатель - разница способов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строки + файлы http://www.cyberforum.ru/cpp-beginners/thread104417.html
Всем, привет!Ребят, не поможете написать програмку? А то я совсем чайник в Си...Учусь в МИФИ, преподы звери, ничего не объяснили, сразу задали писать прогу... Задача такая - Из входного потока...
C++ Вычислить произведение матрицы на вектор Дана матрица A(5,5) и вектор X(5). Вычислить произведение матрицы на вектор. http://www.cyberforum.ru/cpp-beginners/thread104382.html
C++ Зеркальное отображение массива
Всем привет!не могу сообразить как переписать старый массив в новый, отобразить значения массива в обратном порядке у меня получилось,а вот сохранить порядок значений в новом массиве не могу...
Преобразовать массив так, чтобы сначала располагались все положительные элементы, а потом отрицательные C++
Помогите пжлст решить задачу:cry: В одномерном массиве, состоящем из n целых эл-ов, вычислить: 1) произведение элементов массива с четными номерами 2)сумму элементов массива, расположенных между...
C++ Найти максимальный и минимальный элемент,их номера вывести на экран и посчитать сумму между максимальным и минимальным http://www.cyberforum.ru/cpp-beginners/thread104352.html
Доброго время суток,помогите пожалуйста написать программку )если будет возможность то до буду очень очень благодарен... Во общем задание такое ) Прочитать из файла кол-во элементов массива...
C++ Сортировка текстового файла в алфовитном порядке Помогите пожалуста!!! Мне требуется сортировать текст, который хранится в текстовом файле, а алфовитном порядке, и записать полученный словарь в другой файл. Так же, реализовать возможность... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
15.03.2010, 15:44
Цитата Сообщение от Krist_ALL Посмотреть сообщение
ав каких случаях первый способ рационален а когда второй.
Вопрос не в том, когда рационален один способ, а когда второй. Они используются для разных целей.
Начнем с того, что в C/C++ массивы реализованы с помощью указателей:
C++
1
2
int a[5];//a - указатель на первый элемент массива
         //a+1 - указатель на второй элемент массива и т.д.
Таким образом, записи a[0] и *(a+0), a[4] и *(a+4) - аналогичны. Когда ты используешь многомерные массивы (т.е. с размерностью больше единицы), ты уже используешь указатели на указатели на указатели... К примеру, двумерный массив типа int - это указатель на указатель на тип int.
Без указателей на указатели не обойтись, если ты хочешь динамически выделить память под многомерный массив:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main()
{
    //Выделение памяти под двумерный массив
    int** parr=new int*[2];
    for(size_t i=0; i<2; ++i)
    {
        parr[i]=new int[2];
        for(size_t j=0; j<2; ++j)
            parr[i][j]=i+j;//Доступ по индексу
    }
    for(size_t i=0; i<2; ++i, std::cout << std::endl)
        for(size_t j=0; j<2; ++j)
            std::cout << *(*(parr+i)+j) << " ";//Доступ через операцию разыменования
    //Освобождение памяти
    for(size_t i=0; i<2; ++i)
        delete[] parr[i];
    delete[] parr;
    system("pause");
    return 0;
}
Сначала ты выделяешь память под массив строк, потом для каждой строки ты выделяешь память под массив ее элементов
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru