【C++】 char类型学习笔记

这篇博客详细介绍了C++中char类型的基础知识,包括char是什么,字符数组,指针,常量,以及字符指针的各种形式,如常量字符指针,字符指针常量等。作者强调了字符类型与数组、指针的关系,并通过实例解释了字符数组和字符指针的区别和使用注意事项,帮助读者理解C++中字符类型的复杂性。
摘要由CSDN通过智能技术生成


前言

学习C++时,一度被各种类型的字符折磨的头皮发麻,如字符数组,字符指针,C风格字符串,字符数组指针,字符指针数组,字符串常量等等等等;

经过一番学习,于下文写出关于C++ char类型的一点点学习心得;学识浅薄,如有错漏,请不吝赐教;

一、基本概念

0. 楔子

这里都是基础中的基础,理解这个便知道字符各种类型万变不离其宗(本质上就是const 修饰符,指针以及数组类型搞的鬼)。当然,如果直接从第二章看起也是没有问题的,看完第二章再回过头浏览一下或许对下述概念就会清晰不少;

1. char 是什么?

char 是 C++的一个基本数据类型,中文一般称为字符,内存占用1字节,取值范围为-128~127;

最基本的声明并初始化一个char类型:

char c = 'a';

C++中的字符串一般指是 string 类型,不属于基本数据类型,是C++标准库中的string类,在此不进行介绍;

2. 数组

对于类型TT[size] 就是 “具有 sizeT 类型的元素的数组” 类型;这些元素的下标从0到 size - 1;

在C++中,指针和数组密切相关。一个数组的名字能够被用作到他的开始元素的指针,例如:

int v[] = {
   1234}int* p1 = v;		// 指向开始元素(隐式转换)
int* p2 = &v[0]		// 指向开始元素
int* p3 = &v[4]		// 指向最后元素之后一个位置

3. 指针

对类型TT* 是 ”到T的指针“ 类型,也就是说,一个类型为 T* 的变量能保存一个类型 T 的对象的地址;

例如:

char c = 'a'
char* p = &c;	// p 保存着 c 的地址

4. 常量

const 修饰符就是为了直接表述 “不变化的值” 这样一个概念;

关键字 const 可以加到一个对象的声明上,将这个对象声明为一个常量。因为常量不允许赋值,因此必须初始化;例如:

const int model = 90;			// model 是常量
const int v[] = {
   1, 2, 3, 4}	// v[i]是常量
const int x;					// 错误:没有初始化

二、字符各种类型

1. 字符串文字量;C风格字符串;常量字符数组

这仨其实是一个东西;

字符串文字量即用双引号括起的字符序列,也常叫做 字符串,不过此处为了和字符串类型 string 做区分,采用字符串文字量命名;

"这是一个字符串文字量";

所谓的C风格字符串,也即是上述的字符串文字量,它包含的字符个数比它看起来的字符数多一个,总是由一个空字符’\0’结束。

sizeof("abc") == 4

字符串文字量与C风格字符串的类型为"适当个数的常量字符的数组",即 常量字符数组 ,即 const char[]

需要注意的是,可以用字符串文字量给一个 const char* (常量字符指针) || char* (字符指针) 赋值;在 C 和 C++ 的定义中,字符串文字量的类型就是 char*;

ps: 为什么不是 const char*? 别问我,我也不知道,书上就是这么写的 qaq;
不过可以这么理解,const char* 本质上也是 char*;
这里采用书上的说法;后续也使用 char*;

2. 字符数组;

常量字符数组本质上也是字符数组的一种,只是多了 const 修饰符修饰而已;

不过需要注意的是关于字符数组 char[] 与 常量字符数组 const char[] 的初始化;

const 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值