【问题标题】:void ** pointer in function argument c++void ** 函数参数 C++ 中的指针
【发布时间】:2015-04-18 11:52:39
【问题描述】:

在这种情况下如何从 void ** 函数参数中输出 wchar_t * 的变量?

我想通过void**在ChangeMe变量中插入t的值,如何实现?

void foo(void **v){ wchar_t *t = L"String is changed!"; *(wchar_t*)v = *t; } 
wchar_t *ChangeMe = L"";

已经尝试过(不工作):

foo((void**)ChangeMe );

【问题讨论】:

  • 由于这是 C++,也许您正在寻找模板和参考:template<typename T> void foo(T &t) {t = newValue;}
  • @chris 当然,您所说的这些可以提供帮助,但现在特别是我正在寻找如何“输出”值“String is chaged!” wchar_t 内部 *ChangeMe
  • 如果它必须是wchar_t*(不知道为什么你有void*),只需终止模板并使用引用作为参数:wchar_t *&。像对任何其他函数一样将变量传递给它,并像对任何其他变量一样分配给它。
  • 你可能想写*((wchar_t**)v) = t;(注意t的值在返回后超出范围)。不要理会void 指针,编写正确的c++ 代码。
  • @πάνταῥεῖ -> 非常棒,您可以将其发布为答案

标签: c++ function arguments void-pointers


【解决方案1】:

你可能想写

*((wchar_t**)v) = t; 

请注意,t 的值在返回后超出范围。这可能适用于这种情况,因为文字的地址具有静态存储持续时间。

同时将ChangeMe 传递给您要指定其地址的函数时:

foo((void**)&ChangeMe);
         // ^

这是fully working sample


不要为空指针而烦恼;编写正确的 C++ 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2014-09-05
    • 2021-01-15
    相关资源
    最近更新 更多