C++ primer (C++11)——1,2,3,4
来源:互联网 发布:java时间戳精确到毫秒 编辑:程序博客网 时间:2024/06/05 07:22
1.C++11初始化
int test{3};
int test= {13};
int test= {}; // 初始化为0
int test{}; // 初始化为0
新的初始化方式屏蔽了不同变量(包括对象)初始化方式的差异。
2.转义字符
当可以选择使用 数字转义序列 或 符号转义字符时, 优先使用 符号转移序列。 数字转移字符依赖于特定的编码(比如ASCII),而符号可以增强程序的灵活性和易读性。
例如,使用 ‘\b’代替 ‘\08’。
3.const
.const变量在声明时初始化,否则,其值将是随机且不可修改的。
const与#define相比的优势:(1)明确变量类型;(2)可以限制作用域;(3)适用于复杂类型,例如数组和结构体。
4.结构体初始化
struct inflatable
{
char name[20];
float volume;
double price;
};
inflatable duck {"Daphne", 0.12, 9.98}; //C++11中,可以省略‘=’
在编译器支持的前提下,结构体可以有string类型的成员。
5.new和delete,指针
int *ps = new int;
delete ps; //OK
delete ps; // C++标准中对多次释放是未定义的
int jugs = 5;
int * pi = &jugs;
delete pi; // 非法操作,pi指向的内存不是由new分配
int * pt = new int;
short * ps = new short [500];
delete [] pt; // 未定义
delete ps // 未定义
注:(1)不要使用delete释放非new分配的内存;(2)不要多一块内存多次delete;(3)new [x]与[] delete配对使用;(4)new 与 delete 配对使用;(5)delete 用于null 指针是安全的。
6.指针和数组的区别
(1)指针的值可以修改,数组名的值不可以修改;
pointername = pointername + 1; // 合法
arrayname = arrayname + 1; // 非法
(2)对数组名应用sizeof得到数组大小;对指针应用sizeof得到指针大小(即地址宽度);
int arr[20];
sizeof(arr); // 返回20
int * pt;
sizeof(pt); //返回4,32位系统
7.指针与string
(1)一些编译器把string字面量作为只读的,修改string字面量会产生运行时错误;
(2)一些编译器只为相同的string字面量保存唯一一份拷贝。
当源字符串长度超过目标字符数组大小时,strnlen()不会自动为字符串添加结束符(‘\0’),需要自己手工添加。
8.自动存储、静态存储、动态存储
(1)自动存储:典型例子是自动变量。自动变量的作用域仅仅是其定义所在的块。自动变量存储在栈中。
(2)静态存储:静态存储用于存储在程序运行期间持续存在的变量。定义于函数外部或使用static关键字的变量以静态方式存储。
(3)动态存储(自由存储、堆):使用new分配的内存
9.vector 和 array(C++11)
(1)vector模板类:可以在运行时设置容量,可修改、添加和删除元素;使用动态存储;性能不及内建数组;
(2)array模板类:编译时决定大小;使用栈内存,与C中的内建数组性能相同;可以进行越界检查(有性能损失);
- 读C++Primer 4(1)
- C++Primer——string
- c++primer 3/1 ---函数
- C Primer Plus6-11
- c++primer 4 笔记
- 《C++Primer》读书笔记(4)
- C Primer Plus2-4
- C Primer Plus3-4
- C Primer Plus4-4
- C Primer Plus5-4
- C Primer Plus6-4
- C Primer Plus7-4
- C Primer Plus8-4
- C Primer Plus9-4
- C Primer Plus10-4
- C++primer 3 string
- 《C++Primer》读书笔记(3)
- C Primer Plus2-3
- 和菜鸟一起学linux之V4L2摄像头应用流程
- LogBack在项目中的应用
- 国内外知名IT科技博客(强烈推荐)
- 15周(指针程序运行对比)
- linux下获取按键响应事件
- C++ primer (C++11)——1,2,3,4
- Linux下安装Matlab2014及破解
- 虚拟地址、线性地址、逻辑地址
- [LeetCode] N-Queens II
- C++使用临时文件
- 当webview遇到了Slidingmenu,webView出现卡白,右侧边框,解决方案
- 反向投影图
- 正则表达式及限制字数
- java单例模式