《C++ Primer 第五版》读书笔记一

第一章 开始

1.函数的定义

一个函数的定义包含四个部分:返回类型、函数名、形参列表、函数体

2.输入输出

IO对象:

cin用于输入

cout用于输出

endl用于将输出写入输出流,并且实现换行(\n)

第二章 变量和基本类型

内置变量类型

内置类型包括算术类型(整形(包括字符型和布尔类型)、浮点型)和空类型(void)

1个char的大小和一个机器字节一样

其他的字符类型用于扩展字符集

整形:short、int、long、long long

浮点型:float(至少6位有效数字)、double(至少10位有效数字)、long double

类型转换

在这里插入图片描述

表达式中涉及到无符号数,需要把其他因子转为无符号数。

字面值常量

形式和值可以对应一种数据类型,被称为字面值常量。

42、3.1415E0、‘a’、“hello”

变量

初始化:创建变量并为其赋予一个初始值。

赋值:把对象的当前值擦除,以一个新值来取代。

int a = {0} ;

这种用到花括号的初始化方式叫做列表初始化,当用于内置类型的变量时,如果初始值存在丢失信息的风险,编译器会报错,例如:

long double ld = 3.14;

int a = {ld};//丢失了小数部分,会报错

定义在函数内部的内置类型变量将不被初始化,值是未定义的。无法访问和被拷贝。

引用

引用是变量的另一个名字,在声明时必须初始化,与唯一变量进行绑定。不能与字面值或表达式的计算结果绑定。

指针

指针本身是一个对象,允许对指针赋值和拷贝,可以指向多个对象,定义时无须赋初值。

void*指针可以存放任意对象的地址。但因为不知道对象的类型,无法直接操作void星指针所指的对象。

const

const修饰的变量一旦创建,值便不能改变,所以必须初始化。

const引用是对常量的引用,即不允许通过引用改变对象的值。

const引用可以绑定非const对象(无法通过该引用去改变该对象的值,但不影响其他引用改变该对象的值),非const引用无法绑定const对象(const对象使得无法通过引用改变对象这个操作,违背了非const引用的定义)。

引用不是对象,所以不能定义为常量。

指向常量的指针可以绑定非const对象,非指向常量的指针不可以绑定const对象(理由同上)。

const int *a = &b;

指针是对象,可以是常量。即常量指针。

常量指针必须初始化,指针本身不能改变(不能指向别的地址)。但指针指向的对象的值可以通过指针来改变。

int *const a = &b;

对象本身是常量,const被称为顶层const

指针所指向的对象是一个常量、声明引用的const,const被称为底层const

constexpr

常量表达式:值不会改变并且在编译过程就得到计算结果的表达式。

处理类型

typedf关键字用于定义类型别名

当定义复杂类型时,例如:

typedf int* pInt;

const pInt a = 0;≠ const int* a = 0; 左边类型是const pInt ,右边类型是const int,*只是声明符。

这里const用于修饰pInt,而pInt本身是个指针,所以这里是指向int类型的常量指针,而非指向常量的指针。

auto类型说明符让编译器通过初始值来推算变量类型。推测类型时一般会忽略顶层const,保留底层const。遇到引用,会返回跟引用绑定的对象。

decltype类型指示符返回表达式类型,不计算表达式的值。保留顶层const和引用。

const int ci = 0,&cj = c;

decltype(cj) z = 0;这里z就是一个绑定了变量ci的引用。类型是const int&。

:decltype((variable))的结果永远是引用,变量加括号会让编译器把它当做一个表达式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值