static 静态关键字
1.当static去修饰局部变量时 局部变量的生命周期变长(局部变量出了作用域)不再销毁
2.当static去修饰全局变量时 在外部文件中使用static修饰时再使用extern声明 则找不到该全局变量
static修饰全局变量 改变了作用域 让静态的全局变量只能在自己所在源文件内部使用。
3.当static修饰外部函数时 改变了函数的链接属性,让静态函数只能在自己所在源文件内部使用
extern关键字
extern声明外部符号的 可以在本文件中声明其他文件的全局变量(例如 在外部文件中定义了int a =10 在本文件中声明 extern int a 就可以使用)
extern可以声明外部函数例 :extern 返回类型 函数名 (函数参数类型)
register关键字
例如 register int i; 求编译器把变量存储在寄存器中。
当程序被执行时,数据通常存储在内存,当需要计算或其他处理时才被装入CPU的寄存器中。
寄存器是驻留在CPU中的存储单元,具有比内存更高的存取速度。一般将诸如循环变量或累加和变量等这类需要频繁访问的变量声明为寄存器类型。事实上,register声明常常是多余的
事实上,register声明常常是多余的
define关键字
define定义标识符常量.使用时在头部#define定义 例:#define a 100
define定义宏-带参数 例如定义最大值 :
struct 关键字 描述 复杂对象 --结构体
循环分支语句
if条件判断语句
1.if(表达式1){语句}
2.分支
if(表达式1)
{语句}
else
{语句}
3. 多分支
if(表达式1)
{语句}
else if(表达式2)
{语句}
else
{语句}
switch语句
switch(整数表达式)
{
语句项;
}
default:{
语句项;
}(捕获异常输入的,可放前面可放后面) 而且switch可以嵌套使用 (可以放在一个case语句中)
语句项 一般为 case整形常量表达式:语句; 如果不加break的话 会从第几个进去之后会往下继续执行 而且switch要为整型表达式
while循环
while(表达式){
循环语句;
}(表达式为真则执行)
for循环
for(表达式1;表达式2;表达式3){
循环语句;
}(表达式2为真则执行,表达式3为循环次数)
表达式1为初始化部分,用于初始化循环遍历的。表达式2为条件判断部分,用于判断循环时候终止。表达式3为调整部分,用于循环条件的调整
do while循环
do(表达式){
循环语句;
}while;
先执行一次循环语句再去判断表达式是否为真。
函数的递归
递归就是某个函数直接或间接调用自身的问题求解过程。 递归经常作为归纳法和分治法的结果自然地出现。
直接递归:函数在执行过程中调用本身。
间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身
归纳法和分治法产生的子问题往往是原问题的较小模式,最终使子问题缩小到可以直接求解。这自然导致递归过程的产生。
递归分为两个阶段:
1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;
2)回归:当获得最简单的情况后, 逐步返回, 依次得到复杂的解.
关于递归函数总结
1.必须有可最终达到的终止条件,否则程序将陷入无穷循环;
2.子问题在规模上比原问题小,或更接近终止条件;
3.子问题可通过再次递归调用求解或因满足终止条件而直接求解;
4.子问题的解应能组合为原问题的解。