C++primer 第五版 *笔记一 [渣渣进化记]

来源:互联网 发布:运城学院网络管理系统 编辑:程序博客网 时间:2024/04/28 03:04

【第一章】

书店程序核心:

if 语句例子

#include <iostream>int main(){int currVal = 0, val = 0;if (std::cin >> currVal) {        int cnt = 1;while (std::cin >> val) {if (val == currVal)   ++cnt;            else {std::cout << currVal << " occurs "           << cnt << " times" << std::endl;currVal = val;    cnt = 1;         }}  std::cout << currVal << " occurs "           << cnt << " times" << std::endl;}return 0;}
(书上的例子又有错…无语…此程序只能显示第一个出现的次数…还没想怎么改)


【第二章】

·  当知晓数值不可能为负时,选用无符号类型

[引用]:

       定义引用时,把引用和初始值绑定在一起,不是把初始值拷贝给引用,无法让引用重新绑定到另一对象。引用只是为已经存在的对象起另一个名字。

·引用必须初始化!初始值也必须是对象,而不是具体的数值。


[指针]:

写法1:修饰符和变量标识符写在一起 int *p1, *p2;

写法2:修饰符和类型名写在一起,每条语句只定义一个变量。 int* p1;    int* p2;

·新标准下最好用nullptr初始化指针

void* 指针——存放任意对象的地址,缺点是不知道是什么类型的指针,不能直接操作它所指向的对象。

·指向指针的引用

int i = 42; int *p; int *&r = p;//r为引用。从右往左,离变量名最近的符号

[const]:

默认状态下,const对象仅在文件内有效,所以想在多个文件之间共享const对象,必须在变量的定义前加 extern关键字

extern const int bufSize = fcn();

const的引用:允许为一个const引用绑定非常量的对象、字面值

int i = 42;const int &r1 = i;const int &r2 = 42;const int &r3 = r1 * 2;int &r4 = r1 * 2;// 错误,r4是非常量引用

const 的引用 对于引用对象本身是不是常量未作限定,所以对象可由其他途径被改变其值

int i = 42;int &r1 = i;const int &r2 = i;//不允许通过r2修改i的值r1 = 0;//i的值被修改为0r2 = 0;//错误,r2是常量引用

const引用 可以引用一个非const的对象

指向常量的指针 可以指向非常量对象

常量指针: *const   必须初始化,则其值(指针中的地址)不能再改变,不变的是指针的值 不是指向的那个值

顶层const:指针本身是个常量[总结:初始化const 、const指针 、constexpr指针 是顶层const]

const int ci = 42;//顶层constint i = 0;int *const p1 = &i;//顶层const

constexpr int *p3 = &ci;//顶层const

底层const:指针所指对象是个常量[总结:const的引用 、指向const的指针 是底层const]

const int *p2 = &ci;//底层constconst int &r = ci;//底层const

·用constexpr来声明一个常量表达式

·类型别名定义 typedef 新标准中使用 别名声明using

typedef char *pstring;const pstring cstr = 0;//指向char的常量指针

注: 不能将类型别名替换成原来样子理解

const char *cstr = 0;//声明了指向const char的指针

(auto decltype 略看了…)

·auto 类型说明符——让编译器替我们分析表达式所属的类型,auto定义的变量必须有初始值

·decltype 类型指示符——另一种类型说明符,选择并返回操作数的数据类型,不实际计算表达式的值


·预处理器中,头文件保护符依赖于预处理变量,预处理变量两种状态:已定义  未定义
#define 把一个名字设定为预处理变量

#ifdef 变量已定义为真

#ifndef 变量未定义为真。检查结果为真则执行后续操作直到遇见 #endif

有效的防治了重复包含的发生




0 0
原创粉丝点击