最好的C++教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com
![1872efcc273a7ee66e91ffbf8cf7b967.png](https://i-blog.csdnimg.cn/blog_migrate/9278636162c4f75571943fbf7a62425d.jpeg)
这一部分再次强调了字符串常量。字符串常量以00作为字符串的结束符,请注意这里是0,而不是字符‘0’。
#include <iostream>
#include <string>
#include <stdlib.h>
int main() {
std::string name = "che0rno" ;
const char name1[8] = "che0rno";
std::cout << strlen(name1) <<std::endl;
std::cout << name.size() << std::endl;
std::cin.get();
}
以上代码的运行结果:
![e92d6718f4596ca20058abbf3d180ed5.png](https://i-blog.csdnimg.cn/blog_migrate/3aaf4cb1e91c1b07f1518f7ecb5d8d4b.png)
另外,Cherno也补充了一下,
const char * name1 = "cherno";
这一句需不需要const是取决于编译器的,C++标准中并没有确定的说明,所以有的编译器可以编译通过,有的不行。譬如,我这里就不行
![24762dc343c1fd0e927a0c3b984008ef.png](https://i-blog.csdnimg.cn/blog_migrate/1d78a84222fb73f375b73b48f5b39580.png)
这样的话,下面的代码就不行:
![a93a8559acd6af5f382e267a05b9a9a7.png](https://i-blog.csdnimg.cn/blog_migrate/dc4fdefe70c277df6c7a9cb09d339e68.png)
这里name1是一个指向常量的指针,它所指向的内容不能被修改;但是它自己是可以被修改的。
const char * name1 = "cherno";
name1 = "yan";
为什么不能修改指针指向的内容呢?这里深入看一下。
打开项目属性页,输出汇编码:
![d77ab1f36b1a63cefbdb99d15660e772.png](https://i-blog.csdnimg.cn/blog_migrate/0c20c9e8a4a726ace4d91286960c853b.jpeg)
这时可以找到main.asm,打开找一找,字符串是在const段中的: