zoukankan      html  css  js  c++  java
  • C语言结构类型(mooc)

    • 枚举:枚举值的类型一定是int,没有其他类型。从0开始,依次递增。
    • 有一个小套路:
      enum COLOR {red, green, blue, purple, numCOLORS};
      // 因为枚举值是从0开始依次递增,所以最后一个值是和前面的个数相等的。比如前面有4个值,而numCOLORS也是4. 于是就用 最后一个numCOLORS 来表示枚举里有多少个值。方便使用。
    • 枚举也可以不从0开始,人为指定也可以(但一定是int)
      enum color {red=1, blue, yellow=8, white}; //blue == 2, white == 9
      // 当然这个时候就不能使用上面的小套路了
    • 结构体:整个结构体可以作为函数参数的值传入函数。这时候是在函数内新建一个结构体变量,并复制调用者的结构体的值(与数组完全不同) int test(struct list L){} 也可以返回一个结构体。
    • 结构体里面嵌套结构体很难理解,可以试着把结构体嵌套关系用一个图来表示便于理解。
    • 没有直接的方式可以一次scanf一个结构体的,只能逐个给成员赋值。
      #include <stdio.h>
      
      struct point {
          int x;
          int y;
      };
      
      void  getStruct (struct point) ;
      void output(struct point);
      void main ()
      {
          struct point y = {0,0};
          getStruct(y);
          output(y);
      }
      
      void getStruct(struct point p)
      {
          scanf("%d", &p.x);
          scanf("%d", &p.y);
          printf("%d, %d
      ", p.x, p.y);
      }
      
      void output(struct point p)
      {
          printf("%d, %d", p.x, p.y); //输出0,0 而不是用户输入的值。
      }
      View Code

      结构体是创建了一个副本,所以函数调用者想使用修改后的结构体,有两个办法,一种是函数返回一个结构体给调用者,另一个是使用指针。传整个结构体开销太大,so,最好是用指针。

  • 相关阅读:
    文本转换成音频流
    把文本以图片的形式保存
    list集合绑定在datagridview上时如何实现排序
    厘米转换成像素
    sql经典语句收集
    存储过程加密
    跨服务器sql操作
    lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析
    [Big Data]Hadoop详解一
    CDN技术详解及实现原理
  • 原文地址:https://www.cnblogs.com/bneglect/p/14649373.html
Copyright © 2011-2022 走看看