zoukankan      html  css  js  c++  java
  • 预处理&枚举&其他

    预处理&枚举&其他

    预处理

      任何一个应用程序编译的第一步就是“预处理”

      “预处理”阶段,会将所有#开头的预处理指令处理掉

    一.宏定义

      方式一:#define  宏名

      方式二:#define  宏名  值

      方式一 通常和#ifndef配合使用

      方式三:#define  带参宏  值

      例子:

        #define add(a,b) a+b
        int x=add(10, 20);

        [] 所谓的宏替换,只是纯粹的字符串的替换

        [] 预处理阶段不会做任何的数学运算

    二.条件编译

    #ifndef  XXX_H
    #define  XXX_H
    ......
    #endif

      [] 条件编译作用:为了防止头文件被重复包含

    三.typedef关键字的使用 

        int a;//定义一个普通变量
        typedef int a;//定义新类型,a就是新类型名,使用a就可以像使用int一样定义整型变量
        unsigned long x;
        typedef unsigned long width;
        width x;//==unsigned long x;

      [] 使用typedef关键字,定义新类型名,新类型名更加简短,更有内涵,更适合当前程序 

     

    枚举

      c语言中的枚举是用来定义多个常量的

    一.枚举的定义

        enum color {RED,BLUE=10,GREEN};
        //默认枚举列表中每个枚举项的值是从0开始的

    二.枚举的使用

        printf("%d
    ",RED);
        printf("%d
    ",BLUE);
        printf("%d
    ",GREEN);
        enum color e;
        e=10;

     

    其他

    [静态变量]

      静态局部变量

        在一个局部变量定义时用static修饰,这个局部变量立即变为静态变量

        静态局部变量会存储在[数据区],[数据区]中的数据在main开始执行前就存在,在main调用结束之后才消失

    void foo(void)
    {
        int a;//普通局部变量
        static int b;//静态局部变量
    }
    void foo(void)
    {
        static int a=0;//静态变量只会在main函数执行之前做一次初始化
        a++;
        printf("%d
    ",a);
    }
    
    int main(int argc, const char * argv[])
    {
        foo();//1
        foo();//2
        foo();//3
        foo();//4
        return 0;
    }

      静态全局变量

        在一个全局变量定义时用static修饰,这个全局变量立即变为静态变量

        [区别] 静态全局变量定义在所有函数之外

        静态全局变量也只会初始化一次,也是在main函数开始执行之前做初始化动作,也是存储在[数据区]

  • 相关阅读:
    考研笔记-物理层协议
    考研笔记-数据链路层和局域网
    考研笔记-网络层和路由
    考研笔记-运输层服务和工作原理
    考研笔记-应用层
    考研笔记-数据通信技术基础
    考研笔记-计算机网络协议和体系结构
    计算机网络复习(一)
    “百度杯”CTF比赛 十月场_GetFlag(验证码爆破+注入+绝对路径文件下载)
    “技术产品”面向市场的表达方法思辨——BY Me
  • 原文地址:https://www.cnblogs.com/firstsky/p/5892389.html
Copyright © 2011-2022 走看看