C\C++之字符常量与字符串常量在内存中占据的字节数

C\C++之字符常量与字符串常量在内存中占据的字节数

  • 一、关于字符常量&字符串常量
  • 二、字符串详解
  • 三、易错实例详解
    • 1、字符串常量"abc\n"包含几个字符?
    • 2、字符串常量"abc\0de"包含几个字符,占据多少个字节?
    • 3、易错点:区分sizeof函数和strlen函数

叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
在这里插入图片描述

一、关于字符常量&字符串常量

字符常量,所占内存字节数就是字符个数个字节;

字符串常量,所占内存字节数比字符串实际字符个数多了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
}

C\C++之字符常量与字符串常量在内存中占据的字节数_第1张图片

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

C\C++之字符常量与字符串常量在内存中占据的字节数_第2张图片
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));
}

测试结果如下:
C\C++之字符常量与字符串常量在内存中占据的字节数_第3张图片
注意此处3的获得是因为字符串中的终结符出现。

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

注:
人生在勤,不索何获。

你可能感兴趣的:(#,C++,#,小白进阶,字符串,编程语言,c++,c语言)