• C语言----结构与联合(基础篇十一)


        更新中...

      结构的作用

        ※处理大量的数据,除了使用数组外,还有一个方法,就是使用结构。

        ※以前我们只学过int,double,char等几种类型,学了结构以后,程序员就可以定义自己的类型。

        ※从二维表格理解结构(见Excel演示)

      结构类型的定义

        定义格式:

          struct 结构名

            {

              成员表列

            }变量名表列;

         

        结构名”和“变量名表列”可省略,初学者在使用结构时,一般可省略后面的变量名表列,以便于理解。

          如:

            struct student

            {

              char name[20]; /*姓名*/

              char sex[3]; /*性别*/

              int age; /*年龄*/

            };

        ※上面定义了一个结构student,中间是此结构的3个成员变量。记住,它们不可以赋初值,目前只是个躯壳。

        ※那么什么时候才能给里面的成员赋值呢?那就是定义此结构类型的变量。

        ※结构在定义时,后面的分号不可少。

      结构变量

        定义格式:

          struct 结构名 变量名;

            如:

            struct student stu;

         此处的stu就是一个student类型的变量。和数组一样,它也可以在定义的时候初始化,但是格式有些不同:

         struct student stu={“张三”,”男”,23};

           注意:结构变量初始化,必须根据成员变量的类型逐个赋初值,而数组中所有的元素都是赋同样类型的值。

      使用结构变量

        结构变量不能直接引用,必须使用·号对结构中的成员变量进行操作,如:

          stu.age=18; /*赋值*/

          printf(“%d”,stu.age); /*打印*/

        ※成员变量像普通变量一样可进行数学运算。


        程序1

          学生结构

    // 11_1学生结构体
    
    #include <stdio.h>
    #include <string.h>
    
    
    struct student   //定义变量
    {
        char name[20];
        char sex[3];
        int age;
    };
    
    int main()
    {
        struct student stu;
        struct student stu1 = {"李四","",19};      //变量赋值
        struct student stu2 = {"王二麻子","",25};
    
        stu.age = 23;
        strcpy(stu.name, "张三");   //字符串赋值
        strcpy(stu.sex, "");
    
        puts(stu.name);    //字符串输出函数
        printf("%d
    ", stu.age);
    
    
    }

      联合

        在“我的电脑->文件夹选项”中有两种按钮,圆形的是单选按钮,方形的是多选按钮。结构就类似于多选按钮,你可以同时使用其中多个成员变量。联合就相当于单选按钮,无论何时,你只能使用其中一个成员变量,并且只有最后一次      设置的成员变量有效。

         结构 与 联合的区别:

          结构相当于多选框,可以选择多种变量。

          联合相当于单选框,只能选择一个变量,并且变量是以最后的使用为依据的。

        联合的定义格式与结构差不多,只是前面的struct改成union。除此之外,联合还有以下特点:

        

        ※只能对联合的第一个成员进行初始化。

          如:  

          union un

          {

            int i;

            double d;

          }un1={10};       //只能初始化一个变量,联合是单选。

        ※联合变量的地址和它的各成员都是同一地址,因为它是“联合”。

        ※联合与结构之间可以嵌套定义


        程序2

          网友在互通QQ的时候,通常不是给号码就是给昵称,如何用联合来表达?

    // 11-2-QQ联合 网友在互通QQ的时候,通常不是给号码就是给昵称,如何用联合来表达?
    
    #include <stdio.h>
    #include <string.h>
    union QQ
    {
        char name[20];
        long number;
    };
    
    int main()
    {
        union QQ qq;    //定义QQ变量
    
        strcpy(qq.name, "优雅の疯子");
    
        printf("%s
    ", qq.name);
    
    
    
        qq.number = 787228754;
        printf("%ld
    ", qq.number);
        printf("%s
    ", qq.name);
    
    }

    // 11-3结构体   有3个学生结构变量,从中找出年龄最大的那个学生,并打印出这个学生的姓名、性别、年龄。
    #include <stdio.h>
    #include<string.h>
    
    struct student
    {
        char name[20];
        char sex[3];
        int age;
    };
    
    
    int main()
    {
        struct student stumax;        //年龄最大的学生
        struct student stu1 = {"小明","",28};
        struct student stu2 = {"7Don","",25};
        struct student stu3 = {"小红","",18};
        
    
        stumax = stu1;                //年龄最大的学生始终都在stumax中
        if (stumax.age < stu2.age)        //这里要注意比较的时候是比结构中的年龄
            stumax = stu2;            //赋值的时候是直接赋值结构
        if (stumax.age < stu3.age)
            stumax = stu3;
        printf("%s,%s,%d
    ", stumax.name, stumax.sex, stumax.age);    /*只能将元素一个一个地输出*/
    }
  • 相关阅读:
    浅谈动态开点线段树
    详解二叉查找树(BST)
    数组的随机打乱
    浅谈迭代加深搜索
    浅谈传递闭包问题
    详解权值线段树
    算法竞赛中桶的概念与应用
    NKOJ 1353 图形面积
    并查集 & 最小生成树详细讲解
    【线段树基础】NKOJ 1321 数列操作
  • 原文地址:https://www.cnblogs.com/httpcc/p/15192179.html
Copyright © 2020-2023  润新知