zoukankan      html  css  js  c++  java
  • 结构体与枚举

    刚百度了一下,虽然网上有很多优秀的博客详细的介绍了结构体的使用用注意事项。看了别人的,一度让我不想在写自己的博客了。网上都有那么好的了,我为什么还要多此一举呢。

    但是转念一想,别人写的毕竟是别人写的,那是别人的,虽然我能看懂,也能为我所用,但始终不是从自己脑子里一点点想出来的,不是自己手指在键盘上一个字一个字的敲出来的。

    所以尽管自己都知道了,但是还是自己写出来,总结出来,才算真正自己的东西。

    好了,下面来聊一下结构体是什么吧。

    1、首先它是一个体。

    既然是一个体,里面肯定有很多互相作用的小模块。就是这样,结构体里可以定义很多不同数据类型的模块,字符串,数组,指针,整型,浮点数等等。

    定义了结构体,我们就可以定义结构体变量,用开引用结构体中的小模块。典型的例子就是学生信息管理系统。

    关于结构体的定义呢,我们还是采用常用的方式,用typedef来定义结构体,方便后面定义结构体变量。一定要养成良好的习惯啊。

    typedef struct Man//定义了一个结构体Man
    {
        int age;
        int score;
    }man;//结构体变量man
    
    int main()
    {
        man man1 = {20,80};//对模块的引用
        man man2 = {30,70};
        man man3 = {40,99};
        printf("%d
    ",man1.age);
        printf("%d
    ",man3.score);
    }

    2、结构体中的“洞”

    结构体中的每一个模块在内存中并不是禁止排列存储的,而是上下对齐存储。这种现象叫做内存对齐。这样做的目的是为了是处理器能够更快速的进行寻址,执行速度更快。以空间换取时间。

    看来鱼与熊掌还是不能兼得啊。既然是上下对齐的,那么并不是每个模块都能准确的填满一行的内存空间。那么没有被填满的内存空间就造成了空洞。

    这样的话,在查看结构体所占的空间时,就不能把每个模块所分别占的内存空间简单的相加。因为他们中间存在空洞。

    3、在c语言中文网里面对结构体进行了详细的讲解:http://c.biancheng.net/cpp/html/93.html

    包括结构体数组,结构体指针。

    4、枚举

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,

    比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。这种情况下,使用枚举很有用的。

    #include <stdio.h>
    int main()
    {
        enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };//第一个赋值后,后面每一个一次+1  
        enum week day;//也可以直接在上面大括号后面加 day  
        
        scanf("%d", &day);
        
        switch(day)
        {
            case 1: puts("Monday"); break;
            case 2: puts("Tuesday"); break;
            case 3: puts("Wednesday"); break;
            case 4: puts("Thursday"); break;
            case 5: puts("Friday"); break;
            case 6: puts("Saturday"); break;
            case 7: puts("Sunday"); break;
            default: puts("Error!");
        }
        return 0;
    }
  • 相关阅读:
    领域驱动设计(Domain Driven Design)
    程序员的梦想:意图编程
    怎样才算是好的软件可维护性设计?
    微软的patternshare.org初步体验
    转:JDepend:管理代码依赖性
    MAB, 专用的amazon浏览器,有点意思!
    宾夕法尼亚大学沃顿商学院:沃顿知识在线
    我的笔记本的鼠标又乱跑了!寻求帮助!
    能否让博客园对Firefox支持得好一些!
    交互设计:《About Face 2.0》中译本精彩节选
  • 原文地址:https://www.cnblogs.com/qsyll0916/p/6775579.html
Copyright © 2011-2022 走看看