C++Primer Plus-第四章学习

基础知识点:

数组:

1. 定义数组时,size必须是编译时已知的:整型常量、const值、常量表达式。但是可以通过new动态数组来避开这个限制;

2. 数组只能在定义时整体初始化,定义后只能单个数组元素赋值,同样不能将一个数组整体赋值给另一个数组。

3. C++大括号(列表)初始化是通用的初始化方式:

1)可省略“=”:int earnMoney[3] {10000, 8000, 26000};

2)列表初始化禁止缩窄精度。

4. 数组替代品,更复杂灵活。动态数组替代品:模板类vector;静态数组替代品:模板类array。

普通数组模板类array模板类vector
int a[3] = {}array<int, 3> ai;vector<int> vi(3);
静态,栈静态,栈动态,堆heap
不可互相赋值可互相赋值可互相赋值
静态数组替代品动态数组替代品

5. 重点注意:有效下标的重要性。非有效下标编译时不会报错,但是运行时会破坏数据和代码,甚至导致程序异常终止,所以必须确保下标的有效性。

字符串:

定义:存储在内存连续字节中的一系列字符。

1. c-style字符串:存储在char数组中,必须是\0结尾,否则不是字符串:char cat[4] = {'c', 'a', 't', '\0'};

用双引号括起来的字符串常量隐式的包含结尾的空字符: char dogName[] = "danier";

2. C++:string类库:使用指针处理字符串;

3. string类对象可以互相赋值,也可以相加;

4. string类具有自动调整大小的能力;

5. 原始字符串:R"(XXXXX)"; R"+*XXXX+*";

6. strlen()返回可见字符的长度。sizeof()返回整个数组的长度。

结构体:

1. 定义:先定义结构体类型,再声明结构体变量,最后给变量赋值。声明是,允许省略struct关键字。C++不提倡外部变量,但是结构体可以,而且符号常量更应该声明为外部变量。

2. 同类型的结构体间可以互相赋值。

3. C++的结构体成员可以是函数。

4. 结构体数组:数组的每个元素都是一个结构体。

5. 结构体位字段:低级编程中,对硬件寄存器的操作。

6. 共用体:所成员内存单元地址相同,用于节省内存。

7. 枚举:另一种创建符号常量的方式,可代替const。

8. 枚举成员的值可以相同。

9. int类型需要强制类型转换成枚举:color(2);

指针:

1. 指针用来跟踪内存,配合new分配内存,提供了灵活性,可以运行阶段决策。在运行阶段分配匿名内存以存值。

2. 创建指针时,仅仅分配存储指针本身的地址,并不会分配指针指向的地址,所以一定要在解引用前初始化。

3. C++会确保空指针不指向有效数据。对空指针应用delete是安全的。

4. delete只会释放指针指向的内存,但是并不会删除指针变量本身,所以该指针变量还可以重新赋值。

5. 不能通过sizeof获取动态数组的字节数;

自动存储静态存储动态存储线程存储
函数内部定义的变量函数外面定义或使用static修饰new/delete
函数被调用时产生,结束调用时消亡整个程序执行期用户控制声明周期
存在栈区堆heap区

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值