zoukankan      html  css  js  c++  java
  • 结构体的复习

    最近在写一个通信协议方面的程序,遇到结构体方面的一些问题,现在来整理一下,

    问题1、结构体的类型名和结构体变量名可以一样吗?类似下面的:

    1 typedef struct Node
    2 {
    3     uint8_t data;
    4     struct Node   *pre_node;
    5     struct Node   *next_node;
    6 }Node;

    答案:可以一样,结构体名称是类型名,变量名是实体名,一个类型可以有许多实体

    举例讲解:

    结构体类型定义

    第一种:

    1 typedef    struct    LNode
    2 
    3 {
    4     int data;    //数据域
    5     struct    LNode   *next;    //指针域
    6 }*LinkList;

    第二种:

    1 struct LNode
    2 {
    3     int    data;   //数据域
    4     struct    LNode   *next;  //指针域
    5 };
    6 typedef struct LNode *LinkList;


    以上两个定义方式是等价的,是将*LinkList定义为struct LNode类型,即LinkList被定义为一个类型名。这样就可以用LinkList来定义说明新的变量了,如:

    LinkList L;即将L定义为struct LNode类型的指针变量

    2.结构体类型变量定义
    定义方式1:

    1 struct LNode
    2 
    3 {
    4     int data; // 数据域
    5     struct LNode *next; // 指针域
    6 }LnodeA;

    定义方式2:

    1 struct LNode 
    2 {
    3     int data; // 数据域
    4     struct LNode *next; // 指针域
    5 };
    
    struct  LNode LnodeA;

    以上两个定义方式也是等价的,这样就将LnodeA 定义为一个struct LNode类型的变量,即LnodeA为一个struct LNode 类型的变量名;

    以下我们通过测试来说明问题:

    首先,我们测试一下结构体的初始化

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 /***********定义一个同学结构体Stu*************/
     4 typedef struct students
     5 {
     6     char Sex;  //性别
     7     int Age;   //年龄
     8     float Score;  //学习费用
     9     char Address[20];  //住址
    10 };   //定义10个学生
    11 
    12 /***********定义一个老师结构体Tea*************/
    13 typedef struct teachers
    14 {
    15     char Sex;  //性别
    16     int Age;   //年龄
    17     float Score;  //学习费用
    18     char Address[20];  //住址
    19 };
    20 
    21 /***********定义一个学校结构体SCH*************/
    22 typedef struct School
    23 {
    24     struct students Stu[10];   //定义有10个学生
    25     struct teachers Tea[2];   //定义有2个老师
    26     int Grade;         //年级
    27 };
    28 
    29 int main()
    30 {
    31     struct School LeiFeng_Sch;
    32     LeiFeng_Sch.Grade = 12;       //结构体的初始化
    33     printf("小明的性别是:%d
    ",LeiFeng_Sch.Grade);
    34     //现在给小学的学生小明来建立档案
    35  
    36     
    37     system("pause");
    38     return 0;
    39 }

  • 相关阅读:
    恭喜发财
    狗腿子的一天
    向系统分析员爬进
    解决SqlTransaction用尽的问题
    Localhost与数据库连接
    《成都,今夜请将我遗忘》读后感
    如何快速掌握一门技术
    怎样做一个iOS App的启动分层引导动画?
    怎么去掉Xcode工程中的某种类型的警告
    iOS 8 AutoLayout与Size Class自悟
  • 原文地址:https://www.cnblogs.com/liangbo-1024/p/9261942.html
Copyright © 2011-2022 走看看