![]() |
|
Модераторы: Poseidon |
![]()
|
|
| reddevil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.6.2005 Где: Украина. г.Днепро петровск Репутация: нет Всего: нет |
Люди!
Есть вопрос, почему Функция, изменяет значение в масиве, а не делает локальную копию? вот пример:
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 11 Всего: 360 |
Потому что ты передал ей указатель на этот массив. Вот указатель и скопировался
|
|||
|
||||
| reddevil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 27.6.2005 Где: Украина. г.Днепро петровск Репутация: нет Всего: нет |
Если я правильно понимаю, то имя массива и есть указатель
Тогда как объявить локальную копию, чтоб при выходе из функции массив остался целым? |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Во первых поставить квалификатор const("resize(const int y[])") - с этим компилятор убережет тебя если что... и просто в коде перед началом испольхования создать цикл присваивания типа токого:
for(unsigned long i = 0; i < sizeof(massiv); i++) new_massiv[i] = massiv[i]; Здесь не происходит копирования адрессов, а происходит копирования значений, так как [] - это аналог разыменования *. Этот способ так себе... потому что по-ламерски... (с приминением новых переменных) Если в духе СИ, то можно написать так while(*massiv++ = *new_massiv++){} //ИМХО(за правильность не ручаюсь, сам пробывал раз - вроде за границы massiv не вылазиет, следовательно возрвращает эта операция значение BOOL) |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |