zoukankan      html  css  js  c++  java
  • 认识结构体

            ST用结构体的形式对寄存器组进行了封装,因此对结构体有一定的认识和了解,也是学习固件库的重要一步。

          在C语言中,结构体就是指一种数据结构,他可以被声明为变量、指针或数组,用以实现复杂的数据结构。在MDK中有许多地方使用结构体以及结构体指针。

          结构体定义如下所示:

       Struct 结构体名{
                       成员列表:
    
                     }变量名列表;

         结构体类型名字=关键字struct+结构体名,结构体名由用户指定,区别其他结构体类型。

         如下结构体:

        struct date                      //声明一个结构体类型  
    {
    int month;
    int day;
    int year;
    };
    struce student //声明一个结构体类型
    {
    int num;
    int name[20];
    int sex;
    int age;
    struct date birthday; //brithday是struct date类型
    };

          这只是指定了一个结构体类型,他相当于一个模型,并无具体的数据,系统对其也不分配实际的内存单元,为了可以在程序中使用结构体类型数据,需要定义结构体类型变量,并在其中村放入数据。可以采取3中方法定义结构体类型变量:

    1、先声明结构体类型再定义变量

    struct student student1,student2;

          如上已经定义一个结构体struct student,可以用它来定义变量,这种形式的定义有如"int a,b;"相似。

    2、在声明类型的同时定义变量

      struce student                 
    {
    int num;
    int name[20];
    int sex;
    int age;
    struct date birthday;
    }student1,student2;
    
    

          这样将声明类型和定义变量放在一起进行,能够直接看到结构体的结构,适合在写小程序时使用这种方法。

     3、不指定类型名而直接定义结构体类型变量

     struct {
             int num;
             int name[20];
             int sex;
             int age;
             struct date birthday;      
            }student1,student2;

          这样指定一个无名的结构体类型,不出现结构体名,因此无法再以此结构体类型去定义变量。

    结构体变量的引用:

         在定义了结构体变量之后,就需要引用这个变量,那么引用变量需要几个规则:

         1、同类结构体可以互相赋值      如:   

                                         student1=student2;

          2、用若干结构体成员运算符一级一级找到最低级成员,而且只能对最低级成员进行赋值或存取运算,如:

                                        student1.num=10010;
                                        student1.birthday.year=2001

         3、结构体变量成员可以像普通变量一样进行各种运算,如:

                                       student1.score=student2.score;
                                       sum=student1.score+student2.score;

    结构体变量初始化举例:

    #include<stdio.h>
    void main()
    {
      struct student
           {
               long int num;
               char name[20];
               char sex;
               car addr[20];       
           }a={10001,"li",'M',"beijing"}
      printf("No.:% ld
    name:% s
    sex:% c
    address:% s
    ",
                 a.num,a.name,a.sex,a.addr);
    }

       其运行结果如下:

    No.: 10001
    name: li
    sex: M
    address: beijing

     

  • 相关阅读:
    串口应用
    状态栏颜色
    冒泡排序
    快速排序
    good软件测试博客地址
    软件测试面试题
    股票基础知识
    软件测试基本知识
    软件测试流程
    mycat实现分库分表(二)
  • 原文地址:https://www.cnblogs.com/lwangj/p/5061785.html
Copyright © 2011-2022 走看看