|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.07.2017, 21:39 | #1 |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
return адрес
Хочу написать ф-цию, которая бы возвращала в main адрес переменной, хранящей char, но ничего не выходит: чтобы ни пробовал - все время выводит 0 или ошибку.
PS пробовал выводимое значение ставить long и char + указатель на ф-ции |
06.07.2017, 21:46 | #2 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
показывайте код, телепаты в отпуске.
|
06.07.2017, 21:48 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Код:
Если ошибка при попытке разыменовать указатель указывающий непонятно куда, то ничего удивительного.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 06.07.2017 в 21:50. |
06.07.2017, 21:57 | #4 |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
Ещё раз: нужна ф-ция, которая возвращает адрес! Зачем ты пишешь мне этот код?
нужно что-то типа того: Код:
|
06.07.2017, 22:06 | #5 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Так оно и не будет работать, потому что char a существует ТОЛЬКО внутри функции (на стеке!!!!) по завершении - стек откатывается в исходное состояние и там мусор. Код:
Код:
Кстати, это тоже не совсем верно printf ("%x\n", a);//сдесь вроде как доджен отобразится адрес пременной а В частности, под МС-ДОС будут чудные баги. Т.к. указатель это не всегда гарантировано целое число (на нек. системах это пара чисел). Ах, ну я еще не обратил внимание, что у вас там результат функции long везде... это тоже не верно, компилер будет ругаться, по причине, что указатель не всегда число. Более того, long не всегда 64 бита, тогда как на 64 бит системе указатель будет строго 64 бит. Вопщем предлагаю это обдумать самостоятельно. Вопщем нарушено все, что можно нарушить в коде. Последний раз редактировалось alexzk; 06.07.2017 в 22:17. |
|
06.07.2017, 22:17 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Так автор же просто адрес получить хотел, а не разыменовывать его.
А получил 0. В VS и clang кстати не 0, может это оптимизация какая-то? Или UB. http://rextester.com/PBHLK89432
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
06.07.2017, 22:20 | #7 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Вон у меня в CURL long на линухе 64 бита, на маке 32 бита (а мак 64 сам), потому что по умолчанию собирает под старые системы.... Пришлось флаги добавлять и проверки. Вообще, size_t равен указателю обычно, т.е. почти переносимо так: Код:
Последний раз редактировалось alexzk; 06.07.2017 в 22:25. |
|
06.07.2017, 22:23 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
06.07.2017, 22:31 | #9 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Код:
Код:
|
09.07.2017, 09:41 | #10 | |
Форумчанин
Регистрация: 13.05.2017
Сообщений: 100
|
Цитата:
PS. Спасибо за инфу по проблеме, особенно про работу в других компиляторах. Последний раз редактировалось tutejshy; 09.07.2017 в 09:44. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Return; | Мой повелитель | Общие вопросы C/C++ | 1 | 13.06.2016 17:25 |
Оператор "return" без значения. функции оператора "return" | Алексей111083 | Помощь студентам | 1 | 17.01.2016 17:18 |
c++, return | nastya8289 | Помощь студентам | 1 | 12.11.2015 20:56 |
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets | dmitrii6120 | Помощь студентам | 6 | 14.11.2011 20:10 |
как узнать ip адрес зная mac адрес | Roman | Работа с сетью в Delphi | 9 | 25.06.2007 12:39 |