A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Esther33 中级黑马   /  2015-8-12 21:41  /  1160 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

条件编译
1.概念:是一个根据条件编译代码的预处理指令
2.作用:可以让一段代码只在满足条件才编译,提高编译效率
3.用法:
通用  #if 条件表达式   #elif  条件表达式   #else
与宏定义相关 #ifdef 宏名  (表示定义了宏)   #ifndef  宏名   (表示没有定义宏)
                   #endif 结束条件编译(必须有)
4.特点:①条件编译不能访问需要编译后才能执行的代码
②条件编译不需要用大括号,所以必须加上结束表示,否则涵盖下面所有代码
③条件编译一般跟宏定义配合使用,防止重复包含及交叉包含

条件编译对定义变量没有作用,只对预处理指令起作用
#endif只对离其最近的#if起作用

关键字-typedef
1.作用:给一个数据类型取一个别名,方便使用
2.用法:
定义:typedef   类型   别名
         如:typedef   long  int  Lint     表示给以个long int类型取一个别名为Lint
         则:long int a= 5; 与 Lint a=5  二者等效
3.特点:①定义位置没有限制,函数内外都可以
            ②作用域为定义位置开始至所处作用域结束,类似于变量
            ③可以用于任意数据类型
            ④别名具有数据类型的含义,这是跟宏定义最大的区别






宏定义可以实现一些typedef的功能,但是不能完全替换,因为typedef本身具有类型的含义,这时二者最大的区别(定义指针类型的时候,#defined定义的不能连续定义,typedef可以)


static和extern:控制一个变量或函数的作用域
1.外部函数(extern):定义的函数能被本文件和其他文件访问,默认情况下所有的函数都是外部函数,且不允许有同名的外部函数
  内部函数(static):前面加了static,定义的函数只能被本文件访问,表示这个函数只能被本文件访问,别的文件就算声明了也不能访问
2.全局变量:
外部的全局变量(extern):表示可以被其他文件访问操作,默认情况下,所有的全局变量都是外部变量,不同文件中的同名外部边明亮,都代表着同一变量
内部的全局变量(static):表示当前这个全局变量只能被本文件访问,外面文件无法操作它的值。局部
变量一旦被static修饰,那么它只会在函数执行第一次时候创建。
如果函数再次执行,其将会复用之前创建的变量,同时这个变量的声明周期直到程序结束
3.特点:①外部函数不同文件中也不能重名,但内部函数可以
            ②同类型全局变量可以重复定义,但在内存中只有一份
            ③可以在函数内声明一个全局变量,弹药使用必须在函数外定义,extern只是声明
            ④static修饰定义局部变量,则这个局部变量生命周期延长至程序结束,但作用域不变


auto与canst
1.auto:用于定义一个能自动回收的临时变量,这个变量在作用域内用完后会自动销毁
   canst:用于定义一个常量,这个常量在常量区,且在内存中仅有一份,且不能改变
2.用法:
auto 数据类型 变量名(默认所有局部变量都是被这个修饰,可以省略) 如:auto int a=0-->int a=0
        注意:①static修饰的除外2全局变量除外
canst 数据类型 变量名=值
        注意:一旦定义,值就固定不能被改变       如:canst int a;   a=0  错误


goto
1.让指令能够不受条件跨越执行,简化代码
2.用法:


register与volatile
1.作用:
register表示让程序优先把这个数据存在寄存器中
volatile表示让编译器不要去优化代码,不能用缓存,每次使用都必须去内存中获取
2.用法:修饰变量
register 数据类型  变量名;
volatile  数据类型  变量名;
3.什么时候用?
register:如果一个变量使用相当频繁且占用内存又不是很大,可以使用,全局变量与加了static局部变量除外
volatile:如果需要让计算机严格按写得指令执行,且能关注变量每一次值的变化,这个时候可以使用,则编译器不会对执行指令作优化

递归
1.概念:指在函数的定义中使用函数自身的方法,即函数自己调用自己
2.作用:实现一些反复执行的操作
3.用法:  让任意一个整数倒序累加至0的值,如:为3时:3+2+1+0;
int  add(int a)
{
     if(a==0)  return 0;
     return a+add(a-1);
}
4.什么时候用?    当有一些反复的操作,但没有告知明确次数的时候
5.特点:可以用循环实现递归的所有操作

文件操作
1.概念:是对文件或文件内容的输入(读)与输出(写),文件操作的函数在<stdio.h>声明中
2.用法:①打开一个文件并确定操作的方式:fopen(“文件”,“打开方式”);
            函数会返回一个文件的指针(即结构体的指针).FILE *
            

1 个回复

倒序浏览
总结的不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马