网站在线,高端品牌网站设计欣赏,中天建设集团有限公司营业执照,可免费投放广告的平台一、分支
1、三种基本结构
顺序结构分支结构循环结构
2、if与switch对比
1#xff09;使用场景
switch只支持常量值固定相等的分支判断if可以判断区间范围用switch能做的#xff0c;用if都能做
2#xff09;性能比较
分支少时#xff0c;差别不是很大。分支多时使用场景
switch只支持常量值固定相等的分支判断if可以判断区间范围用switch能做的用if都能做
2性能比较
分支少时差别不是很大。分支多时switch性能较高if开始处几个分支效果高之后效率递减switch所有case的速度几乎一样
二、循环
for,do…while,while …
三、自定义类型
1、枚举
使用 #define 和const 创建符号常量
使用enum不仅能够创建符号常量还能定义新的数据类型
enum wT(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
WT weekday;
weekday Tuesday;2、结构体和联合体
struct Student {char name[6];int age;Score s;
}union Score {double sc;char lever;
}3、结构体数据对齐——缺省对齐原则
对于32位CPU
char任何地址short偶数地址int4的整数倍地址double8的整数倍地址
四、函数
1、函数概述
一个C程序是由若干个源程序文件构成而一个源程序是由若干个函数构成函数将一段逻辑封装起来便于复用
2、函数的组成
返回类型一个函数可以返回一个值函数名称这是函数的实际名称参数参数列表包括函数参数的类型、顺序、数量。参数是可选的
3、函数重载
函数名和参数列表一起构成了函数签名
函数名相同但参数列表不同的函数为不同函数 -- 函数重载
4、函数指针与指针函数
每个函数都占用一段内存单元它们有个起始地址指向函数入口地址的指针称为函数指针
int(*p)(int); //是指针指向一个函数入口地址
int* p(int); //是函数返回的值是一个指针5、回调函数
int add(int a, int b) {return a b;
}int reduce(int a, int b) {return a - b;
}void test(int a, int b, int(*pFunction)(int, int)) {cout pFunction(a, b) endl;
}int main() {test(10, 5, add);test(10, 5, reduce);
}4、命名空间
命名空间作为附加信息来区分不同库中相同名称的函数、类、变量等命名空间即定义了上下文。本质上命名空间就是定义了一个范围
namespace rexhao {void test() {cout using namespace rexhao endl;}
}int main() {rexhao::test();return 0;
}5、内联函数
内联函数编译时编译器会把该函数的代码副本放在每个调用该函数的地方
空间换时间提高调用效率
inline int maxValue(int x,int y){return x y ? x : y;
}内联函数内部不能有太复杂的逻辑编译器有时会有自己的优化策略所以内联不一定起作用 6、递归
1递归的四个基本法则
基准情形无须递归就能解出不断推进每一次递归调用都必须使求解状況朝接近基准情形的方向推进设计法则假设所有的递归调用都能运行合成效益法则(compound interest rule)求解一个问题的同一个实例时切勿在不同的递归调用中做重复性的工作
2递归的缺陷
递归是一种重要的编程思想很多重要的算法都包含递归的思想
空间上需要开辟大量的栈空间、时间上可能需要有大量重复运算
3递归的优化
尾递归所有递归形式的调用都出现在函数的末尾使用循环替代使用动态规划空间换时间