| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Значение не сохраняется при выходе из функции |
| Автор: Dika 29.8.2012, 10:31 | ||
Есть функция, в нее передаю строку unsigned char*, в функции присваиваю значение, внутри функции значение есть, а по выходу - нули.
Прилагаю картинку результата работы программы ![]() |
| Автор: Dika 29.8.2012, 10:55 | ||
упростила программу, чтоб было наглядней
в функции значения есть, на выходе нули. Если использовать strcpy(), даже в функции значения не копируются. Что-то не пойму, где ошиблась. Добавлено через 10 минут и 34 секунды buf - это у меня указатель на массив request - тоже указатель на массив, в теле функции указателю request я присваиваю значение адреса указателя buf. о выходе из функции, этот адрес теряется и request никуда не указывает. Так? а как сделать, чтоб значения сохранились? |
| Автор: FCM 29.8.2012, 12:42 |
| Относительно упрощенного варианта: А что тебе нужно в функции - изменить значение адресата передаваемого указателя-аргумента или перенаправить указатель-аргумент на новый адресат (т.е. изменить значение указателя)? Если второе, то сам указатель должен передаваться по адресу, а на выходе из функции указывать на существующий(после выхода из функции) объект. Если первое, то тебе нужно просто копировать внутри функции адресаты - упрощенно что-нить типа for(int i=0; i<6; i++) request[i]=buf[i]; (или напрямую править адресат указателя-аргумента, не вводя никаких buf) Т.е. при первом намерении, вариант со strcpy идеологически правильный, но не компилируется, т.к. strcpy требует char*, а не unsigned char*. Возможно, проблема со strcpy решается приведением к нужному типу. |