为什么你可以在C++字符*中放入多个字符
Why can you put multiple characters in C++ char*
我不知道这是如何工作的。
// This doesn't work (obviously)
char a;
a = "aaa";
// This works
char* a;
a = "aaa";
这是怎么回事?
由于char
类型只存储一个字符或 1 个字节的数字,因此当您通过指针访问它时,如何在其中存储更多字符?
你没有把字符放到char*
里。 您将在编译器确定的内存部分中创建一个字符数组,并将char*
指向该数组的第一个字符。
数组实际上是 const 的,因此您不应该能够将其分配给非 const 指针。 但由于历史原因,您仍然可以在许多C++实现中。 然而,它在C++11中被正式定为非法。
第二个是指向一串字符的指针,而不是单个字符。 教程。
相关文章:
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么签名字符可以保存大于 127 的值?
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 为什么 std::string_view 比常量字符*快?
- 为什么strlen(s)与s的大小不同,为什么cout-char显示的是字符而不是数字
- 为什么我的字符* 复印机返回不同的东西?
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 为什么没有访问所有字符串字符?
- 为什么我的代码在尝试复制字符数组时引发 C6386 错误?
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 为什么char不是单个字符
- 为什么从 std::cin 读取输入后右括号字符的值有时不是")"?
- 为什么对无符号字符进行算术运算会将它们提升为有符号整数
- 为什么在 c++ 中索引字符串会发出隐式转换警告?
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 为什么不能将字符指针定义为数组?
- 输出流中的第一个字符将替换为该流中被删除的最后一个字符.为什么会这样