有件事困扰了我一段时间,我需要一个答案,
char *p = "hello world";
p="wazzup";
p="Hey";
在这里,我声明了一个指向字符串的指针(或者换句话说,我使用指针创建了一个字符串)
我有一些奇怪的结果,如果我使用 char 数组字符串,我通常不会得到
cout <<p<< endl; //"Hey" Gets printer
cout <<p+8<< endl; // I kept adding numbers till "wazzup" got printed
cout <<p+29<< endl; // No matter how much I increment, I cant print "Hello World"
所以我的问题是:
当我更改 char 指针指向的值时。可以
像使用 char 数组一样覆盖原始数据;
或者它在内存中创建一个新字符串并指向它;
还是在旧字符串的开头添加新字符串(包括null);
还是它会在内存中的新位置创建一个新字符串,而我只能偶然打印“wazzup”