gpt4 book ai didi

c++ - 分配取消引用的字符指针真的不可能吗?

转载 作者:行者123 更新时间:2023-11-28 04:13:35 25 4
gpt4 key购买 nike

所以我想我可能已经读到我绝对必须使用 strncpy() 并且通过取消引用分配 char* 是不可能的。我试过了,但遇到了一些麻烦。我做错了吗?或者 strncpy 真的是唯一的方法吗?

我写了一些代码,但发现我的角色没有被保存。

char* characterDestination = new char [ 50 ];
*characterDestination = 'H';
characterDestination++;
cout << "Result: " << characterDestination << endl;


char characterDestination2[ 50 ];
strncpy( characterDestination2, "H", 1 );
cout << "Result: " << characterDestination2 << endl;

输出:

Result: 
Result: H

但我希望 H 在这两种情况下都能打印出来。

最佳答案

在第一个示例中,您增加了指针,它现在指向下一个元素,而不是您保存“H”的元素。

因此,打印它的 cout 不会打印“H”,而是打印内存中从第一个字符串到它找到的\0 之前存在的任何字符串。它什么也没打印,只是因为在您的情况下,\0 恰好是下一个字节。

两个数组都是指针,区别在于第一个是动态分配的,第二个是静态的。 characterDestinationcharacterDestination2 都是指针。

建议:忘记所有这些东西和 string.h 函数完全并使用 std::string。

关于c++ - 分配取消引用的字符指针真的不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57129608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com