为什么C++中的C字符串与Char数组和Char指针不同

Why the C string and Char Array and Char pointer differences in C++

本文关键字:Char 数组 指针 C++ 中的 字符串 为什么      更新时间:2023-10-16

为什么:

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*(指针与数组表示法)。有什么区别?