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



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

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

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。

最新更新