3.1创建函数
- 函数原型: 声明和定义函数时,必须使用参数类型描述。
- C++中,函数定义的参数列表中可以使用未命名的参数。
- 不确定参数列表用省略号(…)表示。
3.2执行控制语句
- true and flase
- If-else
- while
- do-while
- for:每一次循环之前,conditional 被测试,如果含有continue,步进不会跳过。
- break-continue
- switch-case
- goto:跳出多层循环
- 递归:例如:汉诺塔
3.3运算符简介
- 工程中直接用括号使计值次序更清晰。
3.4数据类型简介
-
内建基本类型:char,int, float, double ,规范只规定了内建类型必须存储的最大值和最小值。
-
bool类型由true和false表示。
-
说明符: 用于改变基本内建类型的含义并把它们扩展成一个更大的集合。
long,short(改变最值), signed,unsigned(告诉编译器这样使用整数类型和字符的符号位,默认signed,但是char Implementation Defined) 整数类型大小: short int,int,long int 浮点大小: float,double,long double -
指针简介
可以保存地址 可以使用地址去修改原先的变量 1. 为了能在函数内改变“外部对象” 2. 为了获得许多灵活的编程技巧 引用和指针仅仅是语法上的一种不同方法(语法糖) void* 意味着任何类型的地址都可以间接引用那个指针。(如果是 int*指针,则只能对int变量的地址间接引用那个变量) 指针和引用与 基本数据类型和修饰符是独立的,由此可能产生三倍的组合。*/& + short/long + signed/unsigned
3.5作用域
-
scope 编译属性 (lifetime 运行属性)
-
编译单元
当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp文件名同名的目标文件(.o或是.obj)。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。 -
自由函数
如果一个函数是自由函数,那么这个函数不是类的成员函数,也不是友元函数。 -
linkage: 描述名称如何在不同编译单元间共享
无linkage:连接器不知道,如自动变量。 内部linkage:别的文件可以使用相同的标识符。 a.在C和C++中内部连接由static指定 b.const修饰,但是没有被extern修饰 外部linkage: a.全局变量和函数名
3.6指定存储空间
- 全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间
3.7运算符及其使用
-
赋值 “=”
-
数学运算符 ±*/%
-
关系运算符 > < >= <= == !=
-
逻辑运算符 && || !
-
位运算符 & | ^(异或) ~ (补)
-
移位运算符 >> << 旋转移位(左旋 or 右旋)
-
一元运算符:逻辑非,一元加,一元减,++,–,地址运算符,间接引用(* 和->),强制类型转换运算符,以及new 和delete
-
三元运算符
-
逗号运算符
-
转换运算符
(type)var type(var) -
c++的显示转换
static_cast: 明确定义的变换,类层次的静态定位 const_cast: const 到非const reinterpret_cast: reinterpret_casts are applicable in two scenarios: a. convert integer types to pointer types and vice versa (将整数类型转换为指针类型,反之亦然) b. convert one pointer type to another. The general idea I get is this is unportable and should be avoided. (将一种指针类型转换为另一种。 我得到的一般想法是,这是不可移植的,应该避免。) dynamic_cast:类型安全的向下转换 -
sizeof
-
asm关键字
这是一种转义机制,允许在c++中写汇编代码。
3.8创建复合类型
typedef
struct
enum
union
array
3.9调试技巧
-
调试标记
预处理调试标记#define DEBUG 运行期调试标记 bool debug=false; -
把变量和表达式转成字符串
#define PR(x) cout << #x " = " << x << endl; //把#后的参数转换为一个字符数组 -
C语言assert()宏
在#include<cassert> 之前插入#define NDEBUG 可以消除宏产生的代码。
3.10 函数地址
-
定义函数指针
void (*funcptr)();

3.11 make管理分段编译
- 友情链接:
支持原创:
请移步陈皓大神博客
本文介绍了C++的基础知识,包括函数创建、执行控制语句、运算符、数据类型、作用域等概念。此外还讲解了复合类型创建、调试技巧及函数地址的使用。
151

被折叠的 条评论
为什么被折叠?



