为什么C++中的C字符串与Char数组和Char指针不同
Why the C string and Char Array and Char pointer differences in C++
为什么:
const char cwords = "These are even more words";
导致**error**: cannot initialize a variable of type 'const char' with an lvalue of type 'const char [22]'
但是这个:
const char * cwordsp = "These are more words";
工作?(不会导致错误)
指针cwordsp
似乎需要指向c字符串的内存地址。我错了吗?
C字符串只不过是一个字符数组。
因此,除了你的工作示例,你还可以做这样的事情:
const char cString[] = "Hello world";
基本上相当于:
const char cString[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd' };
请注意,这是一个char
的数组,而不是单个char
。
你遇到问题的原因是:
const char cString = "Hello world";
因为CCD_ 7不可能被解释为CCD_。char
类型只需要一个字符。像这样:
const char c = 'h';
在const char cwords = "These are even more words";
中,使用指向const char
的指针初始化一个8位整数(const char
)。这是非法转换。
因为char是1个字节。
您试图将超过1个字节的数据放入一个包含1字节的数据类型中。const char cwords="这是更多的单词";
在本例中,您创建了一个数组,并获得一个指向数组中第一个字符的指针const char*cwordsp="还有更多的单词";
指针数组和正则数组几乎是一样的,但只是差不多。您可以阅读更多关于这方面的内容:C/C++int[]与int*(指针与数组表示法)。有什么区别?