void * * указатель в аргументе функции c++
Как вывести переменную wchar_t * из аргумента функции void ** в этой ситуации?
Я хочу вставить значение t в переменную ChangeMe с помощью void**, как это сделать?
void foo(void **v){ wchar_t *t = L"String is changed!"; *(wchar_t*)v = *t; }
wchar_t *ChangeMe = L"";
Попробуйте уже (не работает):
foo((void**)ChangeMe );
1 ответ:
Вы, вероятно, хотели написать
*((wchar_t**)v) = t;
Обратите внимание, что значение
t
выходит из области видимости после возврата. Это может сработать в данном случае, поскольку адрес литерала имеет статическую длительность хранения.Также при передаче функции
ChangeMe
необходимо указать ее адрес на самом деле:foo((void**)&ChangeMe); // ^
Вот полностью рабочий образец.
Не беспокойтесь о пустых указателях; напишите правильный код C++.