C\C++之字符常量与字符串常量在内存中占据的字节数
叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!

一、关于字符常量&字符串常量
字符常量,所占内存字节数就是字符个数
个字节;
字符串常量,所占内存字节数比字符串实际字符个数多了1个字节
,因为C格式的格式字符串在后面加了一个结束标志位‘\0’
。
二、字符串详解
用双撇号
括起来的部分就是字符串常量,如“abc”,"Hello!"都是字符串常量。
字符串常量"abc"在内存中占用4个字节(而不是3个字节),编译系统会在字符串最后自动加上一个'\0'作为字符串结束标志
。
但'\0'
并不是字符串的一部分,它只作为字符串的结束标志。字符串常量通常要用字符数组来存放。
三、易错实例详解
1、字符串常量"abc\n"包含几个字符?
字符串常量"abc\n"包含几个字符?
4字符,占据5个字节;
不是5个而是4个字符
,其中“\n”
是一个转义字符
。但它在内存中占用5个字节
(其中一个“\0”字符)。如果在一个字符串中最后一个字符为“\”,则表示它是续行符,下一行的字符是该字符串的一部分,且在两行字符串间无空格。
2、字符串常量"abc\0de"包含几个字符,占据多少个字节?
#include <iostream>
using namespace std;
int main()
{
char s[]="abc\0de"; //注意此处的字符串中出现了终结符'\0'
printf("%d",sizeof(s));
//得到答案为7,包括【1】a、【2】b、【3】c、【4】\0、【5】d、【6】e、【7】\0
}
3、易错点:区分sizeof函数和strlen函数
sizeof(s)得到答案为7,包括【1】a、【2】b、【3】c、【4】\0、【5】d、【6】e、【7】\0
strlen(s)得到答案为3,包括【1】a、【2】b、【3】c
sizeof函数:计算字符串占的总内存空间
例如字符串
str[20]= “abcd”
sizeof(str),结果为20
strlen函数:获取字符串的长度。//遇到终结符‘\0’就会终止。
例如字符串
str[20]= {“abcd”};
strlen(str),结果为4
测试程序如下:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[20]="abc\0de";
printf("%d\n",sizeof(s));
printf("%d",strlen(s));
}
测试结果如下:
注意此处3的获得是因为字符串中的终结符出现。
Ending!
更多课程知识学习记录随后再来吧!
就酱,嘎啦!
注:
人生在勤,不索何获。