C++为 void 指针分配一个字符串
C++ assign void pointer an string
我有下一个问题。我有这样的功能。
无符号长 FuncTest(void* name( { ... }
当我调用 FuncTest 时,我会制作这个表格
int main()
{
void* test = NULL;
cout << "Value of test before to call Function: " << test << endl;
FuncTest(test);
cout << "Value of test after to call Function: " << test << endl;
}
我需要它 FuncTest 更改变量名称的值,例如字符串 o char。可能吗?
我放了我拥有的代码,但不起作用。
void FuncTest(void* name)
{
char* NewValue = _strdup("Hello!");
cout << "Value of name in FuncTest before change: " << name << endl;
name = NewValue;
cout << "Value of NewValue in FuncTest: " << NewValue << endl;
cout << "Value of name in FuncTest after change: " << (char*)name << endl;
}
结果是下一个:
Value of test before to call Function: 00000000
Value of name in FuncTest before change: 00000000
Value of NewValue in FuncTest: Hello!
Value of name in FuncTest after change: Hello!
Value of test after to call Function: 00000000
有人可以帮助我 谢谢!
您按值将test
传递给函数,因此您在函数中对它所做的任何更改都不会反映在调用程序中。
您需要通过引用传递它:
void FuncTest(void *&name)
如果要更改测试的值,则只需将测试指针作为 FuncTest 函数的参数传递即可。
FuncTest(&test);
FuncTest 需要像这样改变
void FuncTest(void** name)
{
char* NewValue = _strdup("Hello!");
cout << "Value of name in FuncTest before change: " << name << endl;
*name = NewValue;
cout << "Value of NewValue in FuncTest: " << NewValue << endl;
cout << "Value of name in FuncTest after change: " << (char*)*name << endl;
}
如果要更改参数的值,则应发送一个地址。 测试似乎是指针,但在调用函数时它在堆栈寄存器中注册。堆栈寄存器变量在函数执行后初始化。所以你需要发送测试指针,然后即使在函数结束后释放它,该值也会保留。 希望这可以帮助您理解。
相关文章:
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 如何检查一个c++字符串中有多少相同的字符/数字
- 获取用C/C++打印的最后一个字符串
- cin >> int 给定一个字符串将 int 赋值为 0
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 使用另一个字符串从字符串中删除空格
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- C++为 void 指针分配一个字符串
- 如何在使用 getch 后在另一个字符串的末尾连接一个字符串
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 如何在另一个字符串的x位置插入一个字符串?
- 有没有办法我可以在 C++ 中使用 if 语句来说明如果一个字符串不是两个名称的 eqal,它会给出一个输出,ATM i
- 在另一个字符串中插入文件扩展名之前的字符串
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- C++自定义流操纵器,用于更改流上的下一个字符串
- 从类返回一个字符串 — 奇怪的行为
- 从我的2d数组中的一列返回的字符串值被压缩为一个字符串(在Mac os上打开Windows txt文件)
- 你能从"volatile const char*"构造一个字符串吗?(不使用`const_cast`