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

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

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

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

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

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

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

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

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

Инициализация указателей - C++
Объявите указатели на следующие объекты: unsigned, char, double, int - проинициализируйте их, выведите их значения на экран. Запишите по...

Инициализация указателей - C++
Добрый вечер, объясните пожалуйста, что значит присвоение начальных значений указателям, как например в данном случае: float *fPtr =...

Инициализация указателей в конструкторе - C++
Всем привет! Вот интересный вопрос. Написано, что до вызова тела конструктора создаются поля класса. Для пользовательских типов -...

Инициализация массива указателей С++11 - C++
Нативный вопрос, хочу инициализировать массив указателей нулями, раньше так делал через цикл. Сейчас читаю о возможностях С++11 и наткнулся...

инициализация массива указателей на указатели - C++
Всем привет. Есть такой код: char **pchAr = new char*; //в цикле по i pchAr = new char; Как заменить эту строку,...

Инициализация массива указателей на функцию - C++
При попытке инициализировать массив указателей на функцию возникает ошибка, не могу разобраться в чем она и как решить её. Заранее...

3
ValeryS
Модератор
7011 / 5349 / 527
Регистрация: 14.02.2011
Сообщений: 18,048
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);
1
Байт
Эксперт C
17714 / 11735 / 1871
Регистрация: 24.12.2010
Сообщений: 23,532
23.02.2014, 00:26 #3
Цитата Сообщение от some_name Посмотреть сообщение
Почему не работает такая конструкция:
Передача параметра по значению. arr в функции init и одноименный arr вне его - это совершенно разные переменные. Каждый из них (как указатель) занимает 4 байта, но расположены они на разных "этажах" стека.
2
some_name
Вежливость-главное оружие
227 / 225 / 55
Регистрация: 19.02.2013
Сообщений: 1,441
23.02.2014, 00:35  [ТС] #4
ValeryS, Байт, аааааа, ясно! очевидно же)

спс
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2014, 00:35
Привет! Вот еще темы с ответами:

Инициализация массива указателей на указатель - C++
Помогите инициализировать данное объявление: int **m6;

Инициализация массива указателей в классе - C++
Доброго времени суток. Столкнулся с проблемой, не могу инициализировать массив указателей в классе: class cards { ...

Задание размера и инициализация массива указателей в конструкторе - C++
1) h: SDL_Texture *textures; Как задать размер и инициализировать в конструкторе? Если пишу так: SDL_Texture *textures; ...

по поводу указателей. Как правильно задавать массив указателей и его удалять? - C++
Т.е., например создаю указатель: TPoint *p_Point=NULL; а если массив? TPoint *p_MassPoint; //=?; как массив обнулить не ясно ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru