ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-08-31 01:00:26  阅读:134  来源: 互联网

标签:十一 变量 age C语言 ---- stu student 结构 struct


    更新中...

  结构的作用

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

    ※以前我们只学过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\n", 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\n", qq.name);



    qq.number = 787228754;
    printf("%ld\n", qq.number);
    printf("%s\n", 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\n", stumax.name, stumax.sex, stumax.age);    /*只能将元素一个一个地输出*/
}

 

标签:十一,变量,age,C语言,----,stu,student,结构,struct
来源: https://www.cnblogs.com/httpcc/p/15192179.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有