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

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

Войти
Регистрация
Восстановить пароль
 
some_name
Вежливость-главное оружие
 Аватар для some_name
220 / 220 / 55
Регистрация: 19.02.2013
Сообщений: 1,430
#1

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

23.02.2014, 00:20. Просмотров 230. Ответов 3
Метки нет (Все метки)

Здравствуйте!

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

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

C++
1
2
3
4
5
6
void init(int *arr, int length){
       arr = new int[length];
}
======================
int *arr;
init(arr, 5);
Заранее спс!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 00:20     Инициализация указателей
Посмотрите здесь:

Инициализация игры... C++
Инициализация указателей C++
Инициализация массива указателей в классе C++
C++ Задание размера и инициализация массива указателей в конструкторе
C++ Правильная инициализация ?
инициализация объекта C++
C++ Инициализация массива указателей на указатель
C++ Инициализация указателей
C++ Инициализация структур
Инициализация C++
C++ Инициализация массива указателей на функцию
C++ инициализация массива указателей на указатели

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
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);
Байт
Эксперт C
 Аватар для Байт
15031 / 9433 / 1379
Регистрация: 24.12.2010
Сообщений: 17,445
23.02.2014, 00:26     Инициализация указателей #3
Цитата Сообщение от some_name Посмотреть сообщение
Почему не работает такая конструкция:
Передача параметра по значению. arr в функции init и одноименный arr вне его - это совершенно разные переменные. Каждый из них (как указатель) занимает 4 байта, но расположены они на разных "этажах" стека.
some_name
Вежливость-главное оружие
 Аватар для some_name
220 / 220 / 55
Регистрация: 19.02.2013
Сообщений: 1,430
23.02.2014, 00:35  [ТС]     Инициализация указателей #4
ValeryS, Байт, аааааа, ясно! очевидно же)

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

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