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

Инициализация указателей - C++

Восстановить пароль Регистрация
 
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,419
23.02.2014, 00:20     Инициализация указателей #1
Здравствуйте!

Возник вопрос только что. Я в принципе догатываеюсь, но для проверки решил спросить.

Почему не работает такая конструкция:

C++
1
2
3
4
5
6
void init(int *arr, int length){
       arr = new int[length];
}
======================
int *arr;
init(arr, 5);
Заранее спс!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,058
23.02.2014, 00:26     Инициализация указателей #2
Цитата Сообщение от some_name Посмотреть сообщение
int *arr;
init(arr, 5);
вот здесь у тебя в функцию уходит не указатель а копия указателя
все равно что
C++
1
2
3
4
5
6
7
fnc(int a)
{
a=5;
}
 
int a;
fnc(a);
так что
C++
1
2
3
4
5
6
void init(int **arr, int length){
       arr = new int[length];
}
======================
int *arr;
init(&arr, 5);
Байт
 Аватар для Байт
13998 / 8829 / 1233
Регистрация: 24.12.2010
Сообщений: 15,996
23.02.2014, 00:26     Инициализация указателей #3
Цитата Сообщение от some_name Посмотреть сообщение
Почему не работает такая конструкция:
Передача параметра по значению. arr в функции init и одноименный arr вне его - это совершенно разные переменные. Каждый из них (как указатель) занимает 4 байта, но расположены они на разных "этажах" стека.
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,419
23.02.2014, 00:35  [ТС]     Инициализация указателей #4
ValeryS, Байт, аааааа, ясно! очевидно же)

спс
Yandex
Объявления
23.02.2014, 00:35     Инициализация указателей
Ответ Создать тему
Опции темы

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