1. 结构体数组
  定义:由若干个相同类型的结构体变量组成的有序的集合。
  定义格式:
    1) 定义结构体的同时定义结构体数组
    struct Car{
      int lunzi;
      int speed;
    }cars[5];

    2) 使用匿名结构体定义数组
    struct {
      int lunzi;
      int speed;
    }cars[5];

  3)先定义结构体,再定义结构体数组
    struct Car cars[5];

  初始化:
   1) 定义结构体数组的同时进行初始化
    struct Car{
      int lunzi;
      int speed;
      char name[20];
    }cars[2]={{2,50},{80,300}};

   2) 匿名
    struct {
      int lunzi;
      int speed;
      int speed;
    }cars[2]={{2,50},{80,300}};

  3) 定义结构体数组初始化
    struct Car cars[2]={{2,50},{80,300}};

  通过数组角标整体去初始化 cars[1]=(struct Car){6,100};

  注意:如果结构体成员是字符数组类型时
  使用: strcpy, scanf 函数进行赋值

 2.枚举

  使用场合:在开发中,如果一个变量只有有限的几个取值,可以使用枚举

  1)枚举类型
    enum 枚举类型名{枚举值1,值2,值3,...};  

  2)枚举类型的变量
    enum SEX{man,women,yao}isex;
    enum {man,women,yao}s1;
    enum SEX s2;

  3)枚举类型变量的使用
    1)枚举元素的值
    系统默认给枚举变量第一元素赋值为0,后面的元素依次是上一个元素+1

    2)给枚举类型变量赋值
    isex = man;
    printf("%d\n",isex);

3.typedef

  定义:给已经存在的数据类型取一个别名
  格式:typedef 原类型 新类型名; //新类型名尽量要大写

  格式: typedef 源类型名 新类型名

  1、基本数据类型
    typedef int MALATANG; 别名: MALATANG

  2、用在数组,给数组起别名
    typedef int ARRAY[5]; 别名: ARRAY
    
  3、给结构体其别名
    typedef struct Person P; 别名: P
    typedef struct { int screenSize; int ram;} IPHONE; 别名: IPHONE

  4、给枚举类型起别名
    typedef enum Sex{kSexMan,kSexWomen,kSexYao} ISEX; 别名: ISEX

  5. 给函数指针起别名
    typedef int (*FUN)(int,int); 别名:FUN

4.预处理指令

  定义:以“#” 开头的一些特殊的指令

  作用: 在编译之前做些处理(宏展开,条件编译,文件包含)

  常见的预处理指令: 宏

  宏:特殊的标示符
  宏替换 :在编译之前,在源文件中,所有出现宏名的地方 都用宏代表的字符串 去替换
  注意:宏不是语句,不需要分号结束

  1)无参宏
    #define 宏名 宏代表的字符串
    #define M 10
    #define AREA 3.14*M*M
    #define PI 3.14

  2)有参宏
    #define Mi(y) y*y+3*y // y 是形参,不分配空间,不需要写类型
    #define MAX(a ,b) a>b?a:b
    #define SUM(a,b) a+b

5.条件编译

  当条件满足的时候去编译一段代码 

  好处:可移植、生成更小的目标文件
  格式:
    #if

    #elif

    #else

    #endif

C语言-1.结构体,2.枚举,3.typedef,4.预处理指令的概念,5.条件编译的更多相关文章

  1. C#语言基础——结构体和枚举类型

    结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...

  2. C语言回顾-结构体、枚举和文件

    1.构造类型 根据已经定义的一个或多个数据类型用构造的方法来定义. 分为:数组.结构体和共用体 2.结构体 struct 结构体名{ 成员列表: }; 1)结构体定义完成以后,计算机不会给结构体分配存 ...

  3. C语言基础(19)-结构体,联合体,枚举和typedef

    一.结构体 1.1 结构体struct定义及初始化 #include <stdio.h> // 这个头文件在系统目录下 #include <stdlib.h> // 使用了sy ...

  4. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  5. C语言中结构体赋值问题的讨论

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  6. C语言的结构体和C++结构体的区别

    关于C++中声明结构体中需要使用构造器创建实例对象的语法: <C++的结构体构造方法的基本概念:结构体的构造方法需要和结构体的名字相同,并且无返回值,也不要void关键字,这样的方法就是构造器的 ...

  7. 01.C语言关于结构体的学习笔记

    我对于学习的C语言的结构体做一个小的学习总结,总结如下: 结构体:structure 结构体是一种用户自己建立的数据类型,由不同类型数据组成的组合型的数据结构.在其他高级语言中称为记录(record) ...

  8. C语言中结构体对齐问题

    C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...

  9. c# 函数练习;结构体、枚举类型

       * 结构体 1.就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 注意:枚举类型和结构体都属于值类型. 2.定义的方法: struct student { public in ...

随机推荐

  1. 【概率dp】C. Race to 1 Again

    https://www.bnuoj.com/v3/contest_show.php?cid=9146#problem/C [题意] 给定一个数D,每次随机选取这个数的一个因子x得到新的数D=D/x,知 ...

  2. [转]eclipse的android智能提示设置

    以往 我们往往在输入 "." 然后 alt+/ 来进行智能提示,下面这个方法,可以帮你大幅度的提高智能打开 Eclipse -> Window -> Perferenc ...

  3. poj2689素数问题

    打算重新刷一下数论题,忘了很多了,水平也很差,此题入手就不顺了,刷了一个早上,只是一个简单 的素数应用罢了.题意:找出区间长度不超过10^6的最近的素数和最远的素数(相邻的), 算法:数在int范围内 ...

  4. DELPHI跨平台的临界替代者

    在WINDOWS里面使用临界来保护多线程需要访问的共享对象,现在,DELPHI有了新的跨平台临界保护者--System.TMonitor 代码演示如下: FConnections := TObject ...

  5. 【stl学习笔记】deques

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似.deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map ...

  6. 【转】C++函数的重载、覆盖和隐藏区别

    网上看到的关于C++函数的重载.覆盖和隐藏区别的回答,如下(其内容来源于C++面试宝典中一道题目): a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:( ...

  7. 浏览器websocket

    使用浏览器,PHP 来构建的应用,发现都是每次浏览器发送一次http 请求,PHP 回一个响应. 这样,后端的PHP 在处理多次http请求是,每次都是不同的进程在处理. 这就加大了开销, 而且,PH ...

  8. HashMap、HashTable、TreeMap 深入分析及源代码解析

    在Java的集合中Map接口的实现实例中用的比較多的就是HashMap.今天我们一起来学学HashMap,顺便学学和他有关联的HashTable.TreeMap 在写文章的时候各种问题搞得我有点迷糊尤 ...

  9. 获取当前时间 YYYY-MM-DD

    1.函数封装 /** * 获取当前时间 * 格式YYYY-MM-DD */ Vue.prototype.getNowFormatDate = function() { var date = new D ...

  10. C语言 字符串操作 笔记

    /* C语言字符串的操作笔记 使用代码和注释结合方式记录 */ # include <stdio.h> # include <string.h> int main(void) ...