【C++】第二章:变量和基本类型

2.1 基本内置类型

2.1.1算术类型

在这里插入图片描述

  • 这里说一下有符号型与无符号型的数值表示范围:
  1. 有符号型的类型,例如 signed int a;int占用4个字节,32bit的数据。这32bit的首位,作为符号位:1为负,0为正;这样的话,只能用剩下的31bit来表示数的大小,则a的数据值范围为:-231——231-1
  2. 无符号型的类型,例如unsigned int a;int占用4个字节,32bit的数据。因为无符号位,故32bit全部来表示数的大小,则a的范围为:0-232-1

2.1.2类型转换

  • 这一部分,书上只要讲解的是,类型转换的注意事项,对于自己使用来说,尽量规避这种使用即可;
  • c++中的类型强制转化(两种方式均可)
int i = 10;
double j = (double)i; 
int i = 10;
double j = double(i); 

2.1.3字面值常量

23

34

  • 用前缀和后缀来指定字面值的类型
    在这里插入图片描述

2.2 变量

2.2.1变量的定义

  • 这一小节的写一下注意事项吧
  1. 注意:初始化不是赋值,初始化的含义,船舰变量的同时赋予其一个初始值;赋值的含义是把对象的当值擦除,来用一个新值代替。
  2. 这一块还提到了:列表初始化。这个是要是用于对对象初始化。
  3. 这一块还提到了:默认初始化。这啥意思呢,比如,你定义一个全局变量int a;,在main之外定义,这个数肯定是存放在全局静态区,默认被初始化为0。

2.2.2变量声明与定义的关系

  • 定义:申请存储空间,创建与名字关联的实体
  • 声明:使得名字为程序所知,告诉这个文件,有这个值得存在,且已经被定义了
  • 有两个文件a.cpp和b.cpp,如果b想要用a中的变量,我们只需要在a.h里面写上 extern int a ;而且声明不能给变量赋值,否则extren失效,会报错

2.2.3标识符

  • 标识符:数字、字母、下划线组成
  • 只能以字母、下划线开头
  • 字母的大小写,C++会做区分的

2.2.4变量命名规范

  • 变量名一般采用小写
  • 用户自定义的类名一般以大写字母开头
  • 若标识符由多个单词组成,应用下划线区分开
  • 宏定义定义东西,一般全部使用大写字母

2.2.5名字的作用域

  • 这里举一个例子算了
#include <iostream.h>
int temp = 10;
int main()
{
	int temp = 20;
	cout<<::temp<<endl;  //表示全局的temp
	cout<<temp<<endl;   //表示main里面的temp 
}

2.3 复合类型

2.3.1引用

  • 引用其实就是为变量、对象起了一个别名
  • 引用在定义的时候,必须初始化
  • 引用常用于作为函数的形参使用
  • 引用其实就是“简化”的指针
int temp = 10;
int &ref = temp;
int &ueue = ref;
//temp ref ueue 相互绑定,操作一个即在对另外两个操作,在调用引用的时候,无须加&

2.3.2指针

  • 与C语言相差无几,不再赘述
  • 注意的是,在C++11新标准中,当指针指向空的时候,最好用nullptr,尽量避免用NULL

2.4 const限定符

  • const的对象一旦创建,其值就不能在改变了
  • C++中,在定义常量的时候,尽量用const代替宏定义#define
  • const常量,若想让其它文件共享,必须要在定义和声明的前面都要添加extern,这一点是与普通的变量不相同的。例如:
//test.cpp
extern const int temp = 100;  //定义
//test.h
extern const int temp;  //声明
//其他文件调用test.h即可

2.4.1const的引用

  • 这块用文字表达比较复杂,我还是直接举例子好了
  1. temp、ueue都不能修改
const int temp = 10;
const int &ueue = temp;
  1. 可以通过修改temp而改变ueue,但是不可以通过ueue来改变temp
int temp = 10;
const int &ueue = temp;
const int &Queue =55; //正确,这个操作也是奇葩,不晓得作用在哪里
int &Queue = 55;  //错误

2.4.2const的引用与指针以及顶层const

  • 这一块,确实有点恶心,尤其是这个相互赋值问题,看书看的我有点晕。先跳过吧。
  • 先记住最基本的:
const char *temp  //指向常量的指针
char *const temp  //常指针
const char *const temp  //指向常量的常指针

2.5 处理类型

2.5.1类型别名

  • 就是为数据类型取一个别名
typedef int ElemType;
ElemType temp = 10;
  • C++11新规(C++20都出了我还在看C++11,/哭)
using ElemTpye = int;
ElemType temp = 10;

2.5.2auto类型说明符

  • 这个东西是个啥呢?
  • 编程的时候,往往需要把表达式的值赋给变量,这个表达式可能是一个函数,但是有时候呢,这个函数或者表达式呢根本找不到,那我们在定义变量的时候,就不知道定义什么类型了,而这个auto可以帮我们自动分析这个表达式是什么类型
auto item = val1 + val2;
//auto能识别出等号右侧的类型,从而用该类型定义item
  • atuo还有与常量以及复合类型的结合,有点复杂,没看

2.5.3decltype类型指示符

  • 有时候,我们需要知道右值表达式的类型,但是并不想用该表达式的值初始化变量,也是不想去运行这个表达式,而auto呢,需要去运行这个表达式,注意这个两个的区别。
decltype (fun()) sum = x;
  • 这块最简单的,先知道auto和dectltype是干啥的就行了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋山刀名鱼丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值