cout输出字符串_C++零基础13:字符串常量、常量、mutable

最好的C++教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
1872efcc273a7ee66e91ffbf8cf7b967.png

这一部分再次强调了字符串常量。字符串常量以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

另外,Cherno也补充了一下,

const char * name1 = "cherno";

这一句需不需要const是取决于编译器的,C++标准中并没有确定的说明,所以有的编译器可以编译通过,有的不行。譬如,我这里就不行

24762dc343c1fd0e927a0c3b984008ef.png

这样的话,下面的代码就不行:

a93a8559acd6af5f382e267a05b9a9a7.png

这里name1是一个指向常量的指针,它所指向的内容不能被修改;但是它自己是可以被修改的。

const char * name1 = "cherno";
name1 = "yan";

为什么不能修改指针指向的内容呢?这里深入看一下。

打开项目属性页,输出汇编码:

d77ab1f36b1a63cefbdb99d15660e772.png

这时可以找到main.asm,打开找一找,字符串是在const段中的:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值