C++新经典
第1章 C/C++
1.1 C和C++语言的起源、特点、关系与讲解范畴
1.2 C/C++语言市场需求与就业需求分析
1.3 再谈C/C++就业
1.4 搭建开发语言环境
第2章 数据类型、运算符与表达式
2.1 常量、变量、整形、实型和字符型
2.1.1 创建最基本的C程序
2.1.2 C语言的数据类型
1.每种数据类型所占内存大小
2.每种数据的取值范围
2.1.3常量和变量
常量:字面值。
变量:值可以改变的量。
变量定义:类型名 变量名 [ = 变量初始值 ];
标识符:变量等等的取名。
保留字:系统保留的特殊用途的字。
2.1.4 整型数据
整数,包含所有进制。
2.1.5 实型数据
小数。
2.1.6 字符型数据
1.字符常量
‘a’ , ‘b’ ,‘1’
2.转义字符
‘\n’ ‘\’ ‘’’ …
3.字符变量
char c = ‘a’ ;
printf("c1=%c, c2=%c\n",c1,c2);
printf("c1=%d, c2=%d\n",c1,c2);
printf("%f",num);
知识点: ASCII
2.1.7 字符串常量
printf("hello world!");
/*
* 区分'a' "a"
* 字符串结尾多出来一个转义字符'\0',作为结束符
*
*/
注:Ctrl+F5 调试
Ctrl+F9 断点
Ctrl+F10下一断点
Shift +F9 添加监视
Ctrl Alt M +1 调用内存1(调试-窗口-内存-内存1)
2.1.8 变量赋初值
定义变量之后才能使用,一般是要赋初值的,否则会出错。
2.1.9 数值型数据之间的混合运算
不同数值类型的数据一起运算的的时候,系统尝试将变量类型统一。
类型转换从:
char , short ---->int ----> unsigned ----> long ----> double <-----double <----float
范围:由小变大。(隐式转换)
2.2 算数运算符和表达式
2.2.1 C语言的运算符
算数运算符 + - * 、 %(取余)
关系运算 <, <=, ==,>, >=,!=
逻辑运算符 !, &&, ||
位运算符 <<, >>, ~, |, ^, &
赋值运算符 =
条件运算符 ? :
逗号运算符 ,
指针运算符 * , &
求占字节运算符 sizeof()
强制类型转换符 (类型名)
成员变量运算符 . , ->
下标运算符 []
其他 …
2.2.2 算术运算符和算数表达式
2.2.3 运算符优先级问题
2.2.4 强制类型转换运算符
一般形式: (类型名)(表达式)
int a=1;
double b=(int) a;
总结:两种数据类型转换
- 自动类型转换,类型范围由小到大。
- 强制类型转换
都有精度损失或者溢出的风险。
2.25 自增和自减运算符
前++
后++
只适用于整型变量。
2.3 复制运算符和逗号运算符
2.3.1 赋值运算符和赋值表达式
第3章 程序的基本结构和语句
第4章 程序的基本结构和语句
第5章 循环控制
第6章 数组
第7章 函数
第8章 编译预处理
第9章 指针
第10章 结构体与公用体
第11章 位运算
第12章 文件
第13章 C++基本语言
13.6函数新特性、inline内联函数与const详解
13.6.1 函数回顾与后置返回类型
前置返回类型
int func( int a , int b);
int func( int a , int b)
{
return a+b;
}
后置返回类型
auto func( int a, int b)->int ;
auto func( int a, int b)->int
{
return a+b;
}
提示:一般一个函数写个几十到几百行就行,别太多,难以阅读。
13.6.2 inline内联函数
将简短且常用的函数定义为内联函数,代码在编译时被编译器会自动替换函数为函数体。
- 循环、分支、递归调用就不要使用内联修饰符。
- 内联函数类似 宏展开 #define 和 constexpr
inline int myfunc()
{
return 1;
}
13.6.3 函数特殊写法总结
- 返回空
void func(int a, int b){
a+b;
}
- 返回 值
int func(int a, int b){
return a+b;
-返回指针
int * func(int b)
{
int a=b;
return &a;//函数一结束a就被释放,巨大隐患。
}
- 返回引用
int & func()
{
int a=0;
return a;//函数一结束a就被释放,巨大隐患。
}
- 采用形参返回
void func(int &a