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,最好是用指针。

  • 相关阅读:
    [Leetcode]142. Linked List Cycle II
    c程序设计语言笔记001
    把输入一次一个字符复制到输出
    linux笔记
    转 算法之二叉树各种遍历
    将输入复制到输出
    java.lang.OutOfMemoryError处理错误
    字号对照表
    颜色十六进制对照表一
    CSS样式(转)
  • 原文地址:https://www.cnblogs.com/bneglect/p/14649373.html
Copyright © 2011-2022 走看看