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

Выделение динамической памяти указателю в локальной функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычисление кол-ва предложений в строке http://www.cyberforum.ru/cpp-beginners/thread299295.html
Подскажие пожалуйста как написать программу,которая подсчитывает количество предложений в строке. Считать разделителем и точку и пробел. Организовать вычисления в отдельном потоке. Заранее спасибо...
C++ Очень срочно , через 2 дня сдача) (композиция, наследование) Разработать и реализовать диаграмму классов для описанных объектов предметной об-ласти, используя механизмы наследования и/или композиции. Проверить ее на тестовом примере, с демонстрацией всех возможностей разработанных классов на конкретных дан-ных. Даны: Объект символ, умеющий печатать свое значение и отвечать на запрос о значении сво-его символьного поля. Объект «строка» переменной длины,... http://www.cyberforum.ru/cpp-beginners/thread299287.html
Алгоритм перевода чисел C++
Помогите пожалуйста! Надо мне написать алгоритм перевода из десятичного числа в 16 ричное число! Через стандартные функции не катит,и через указатели тоже! Он должен быть самым простым алгоритмом! Вот как реализовать это програмно: залаем с клавиатуры число,делим его на 16,записываем остаток,потом сравниваем если число равно от 1 до 10 то ничего не менять,а если больше 10 то записать букву! Что...
C++ Позиции
Найти все натуральные числа не превосходящие n десятичная запись которых есть строго возрастающая или строго убывающая последовательность . Скажите мне пожалуйста как разбивать пробую с остатком ну чет не идет к меня .
C++ DrawGrid изменение размеров http://www.cyberforum.ru/cpp-beginners/thread299265.html
Доброе время суток! Объясните мне пожалуйста как автоматически изменять высоту и длину (размеры) окна DrawGrid Моя задача состоит в решение матриц (любой размерности(в пределах разумного !>100)), с увеличение количества ячеек длина и высота не меняется должным образом. попробовал мудрить: void __fastcall TForm1::Button1Click(TObject *Sender) { a=StrToInt(Edit1->Text); if...
C++ Заполнить матрицу соответствии образцу Заполнить матрицу соответствии образце Чистый Си подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.05.2011, 00:16     Выделение динамической памяти указателю в локальной функции
Всё дело в том, что когда мы передаём переменную в функцию по указателю, мы собираемся менять значение переменной. Поменять указатель мы не сможем (поскольку в данном случае локальным параметром буде являться указатель). А при выделении памяти нам необходимо изменить именно указатель. У вас же получается, что меняете вы всё-таки локальную переменную, т.е. указатель на тип int. Чтобы сделать то, что вы хотите, следует передавать указатель на указатель (чтобы изменить не значение по указателю, а указатель по указателю), т.е. так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
void my_alloc(char **memory)
{
    *memory = new char [100];
}
 
int main()
{
    char *ptr;
 
    my_alloc(&ptr);
 
    // Работа с памятью
 
    delete [] ptr;
 
    return 0;
}
Чтобы скрыть подробности (не брать адрес указателя лишний раз), можно с тем же успехом использовать ссылки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
void my_alloc(char *&memory)
{
    memory = new char [100];
}
 
int main()
{
    char *ptr;
 
    my_alloc(ptr); // Больше не надо писать &ptr
 
    // Работа с памятью
 
    delete [] ptr;
 
    return 0;
}
 
Текущее время: 21:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru