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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 会长大的小牛 中级黑马   /  2015-11-21 07:29  /  1408 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  • 所谓预处理就是在编译前所预先处理的指令

  • 宏定义
    是什么?
  • \
  • file:///var/folders/fr/vw5hgn6n7cvgv3mbfh3wsr3w0000gn/T/WizNote/7dacabba-c4e7-4b4f-8726-9205f489e177/index_files/ef97e5fa-5505-49f1-bce6-994bc8b2ded6.png
  • 宏定义函数并不是一个函数,只是叫做宏定义函数
    1命名规则以k或大写开头,    2被双引号引起来的不会被替换  3宏定义只做代码替换并不关注任何逻辑   容易出现优先级的错误.
    宏定义也是有作用域的,有全局还有局部
    undef 是用来结束宏定义的   不能单独存在     注意undif 与 ndif 的区别  一个是  终止宏定义,一个是没有宏定义
  • 宏定义的使用代码:

    • #include <stdio.h>
    • #define add(a,b) a-b
    • int main(){
    •     int a;
    •     int b;
    •     printf("请输入任意两个数:\n");
    •     scanf("%d,%d",&a,&b);
    •     int c = add(a,b);
    •     printf("%d\n",c);
    •     return 0;
    • }
  • 条件编译
    是什么?
    是一个根据条件编译代码的预处理指令
  • 有什么用?
    可以让一段代码满足条件才会编译,提高编译器效率
    怎么用?


    #if  后面一定要有 #endif    elseif  ==>#elif     else ==>#else




    • #include <stdio.h>
    • //#define kA 3
    • int main(){
    • #if (kA==5)
    •     printf("你满足我了,拿我就执行了哦!\n");
    • #elif (kA==3)
    •     printf("这次你满足我了,那我就执行这个楼^-^\n");
    • #else
    •     printf("上面条件都不满足,我不就来了吗\n");
    • #endif
    •     return 0;
    • }


  • 什么时候用?
    当一些代码需要在一定条件下编译时
  • 有什么特点?
    1,条件编译不能访问需要编译后才执行的代码 2,条件编译一般与宏定义配合使用,防止重复包含与交叉包含 3,节省内存


  • typedef
  • 是什么?
    是c语言的一个关键字
  • 有什么用?
    可以给一个数据类型名用另一种别名表示
  • 怎么用?


    • #include <stdio.h>
    • int main (){
    •    typedef struct Car{
    •         char *name;
    •         int cheDeng;
    •         int paiLiang;
    •    
    •     } c1;
    •     //当然还可以给枚举起别名
    •   c1 b1 = {"宝马",5,2};
    •     printf("%s---%d--%d",b1.name,b1.cheDeng,b1.paiLiang);
    •     return 0;
    • }
  • static 的用法

  • file:///var/folders/fr/vw5hgn6n7cvgv3mbfh3wsr3w0000gn/T/WizNote/7dacabba-c4e7-4b4f-8726-9205f489e177/index_files/ea13f5a8-0bda-4ef0-8282-938b9f032fcb.png
  • 应用场景:    反复使用 而且在满足一定条件下才能使用的情况下

  • 局部变量
  • file:///var/folders/fr/vw5hgn6n7cvgv3mbfh3wsr3w0000gn/T/WizNote/7dacabba-c4e7-4b4f-8726-9205f489e177/index_files/e0e8efa7-6e96-4922-a83f-e0ee65e2580a.png
auto  的使用
用于定义一个能自动收回的临时变量,  这个变量在作用域内用完后就会自动销毁,实际上所有的局部变量前面默认加了auto,所以平时可以省略不写
  • const   
    如果用const定义一个变量时,将变量的值放到常量区,变量的值可以复用但是不会改变.直到系统结束.   
  • register  
    使用场景: 如果一个变量使用相当频繁且占用内存又不是很大.全局变量与加了static局部变量不能用
  • volatile:如果需要让计算机严格按写的指令执行,且能关注变量每一次值的变化,这个时候可以使用,则编译器不会对执行指令作优
  • 输入与输出是相对于操作者的
  • file:///var/folders/fr/vw5hgn6n7cvgv3mbfh3wsr3w0000gn/T/WizNote/7dacabba-c4e7-4b4f-8726-9205f489e177/index_files/2d4f2d10-7323-4b17-8060-71547e9f086b.png

评分

参与人数 1黑马币 +2 收起 理由
大魔王seven + 2 赞一个!

查看全部评分

2 个回复

倒序浏览
不错不错
回复 使用道具 举报
我有个少年梦 来自手机 中级黑马 2015-11-21 12:17:15
藤椅
加油不错哦加油不错哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马