这些之间有什么区别:

这个作品:

char* pEmpty = new char;
*pEmpty = 'x';

但是,如果我尝试这样做:
char* pEmpty = NULL;
*pEmpty = 'x'; // <---- doesn't work!

和:
char* pEmpty = "x"; // putting in double quotes works! why??

编辑:感谢您的所有评论:
我纠正了。应该是pEmpty ='x',
因此,此行甚至都不会编译:char pEmpty ='x';
此行有效:char * pEmpty =“x”;//双引号。

最佳答案

区别在于字符串文字存储在程序运行时可以访问的内存位置中,而字 rune 字只是值。 C++的设计使字 rune 字(例如您在示例中使用的文字)可以作为机器代码的一部分内联,并且根本不会真正存储在内存位置。

要执行您似乎想做的事情,必须定义一个类型为char的静态变量,并将其初始化为'x',然后将pEmpty设置为引用该变量。

09-27 13:23