| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Локальные копии переменных |
| Автор: reddevil 4.7.2005, 00:21 | ||
| Люди! Есть вопрос, почему Функция, изменяет значение в масиве, а не делает локальную копию? вот пример:
|
| Автор: sergejzr 4.7.2005, 01:27 |
| Потому что ты передал ей указатель на этот массив. Вот указатель и скопировался |
| Автор: reddevil 4.7.2005, 08:21 |
| Если я правильно понимаю, то имя массива и есть указатель Тогда как объявить локальную копию, чтоб при выходе из функции массив остался целым? |
| Автор: En_t_end 4.7.2005, 10:18 |
| Во первых поставить квалификатор 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) |