结构体类型

本文深入探讨了结构体的概念及其在C语言中的定义与使用方法,包括结构体成员的定义、访问方式及直接赋值,并详细解释了结构体嵌套的原理与实践案例。

1. 结构体是一种自定义的数据类型,也是用来存储多个数据的大容器,只不过结构体要比数组灵活,它可以存储不同类型的数据

2.结构体定义:struct + 结构体名字{大括号中填写结构体成员,多个结构体成员之间通过分号进行间隔} +;(分号必不可少)

如:定义一个学生结构体

struct student {
           //结构体成员
    int number;          //存储学号
    char sex ;             //存储性别
};//分号是结构体定义的结束标志,必不可少

3.结构类型重定义要用typedef.

(1) 

第一种格式,先定义结构体类型,然后在typedef   如
   struct point{    //点结构体
    float x;     //存储横坐标
    float y;     //存储纵坐标
};
typedef struct point point ;

(2)

 第二种格式,定义结构体的同时,在typedef  如
typedef struct student {
   //结构体成员

   char name[20];          //存储姓名
    char sex ;             //存储性别

   int number;          //存储学号
}stu;

4.结构体变量的定义

  结构体类型= struct + 结构体的名字

结构体变量访问结构体成员的方式,通过结构体变量.结构体成员  stu.number;

结构体变量可以直接赋值.如:

stu xiao = {"xiaocji",'f',10};

stu  mm = {0};

 mm = xiao;

下面是一个列子:

 stu stu1 = {"xiaowu",'f',20};
    s
tu stu2 = {"liuzi",'m',100};
    s
tu stu3 = { "wangwu" ,'f',11};
    s
tu maxScore  = {0}; //存储分数最高者
    s
tu minAge = {0};  //存储年龄最小者
    
1.先找出两个人中分数最高者
    maxScore = stu1.score > stu2.score ? stu1 : stu2;
   
2.在找出分数最高者 和 第三个人中的分数最高者
    maxScore = maxScore.score > stu3.score ? maxScore :stu3;
    
1.先找到前两个人中年龄最小者
   minAge = stu1.age < stu2.age ? stu1 : stu2;
   
2.在找到年龄最小者和第三人中,年龄最小者
   minAge = minAge.age < stu3.age ? minAge : stu3;
   printf(
"%s  %s",maxScore.name,minAge.name);

这个例子就是能很好的体现:结构体可以直接赋值.

5.结构体嵌套

//定义学生结构体
typedef   struct  birthday{
    
int  year;     //存储年份
    
int  month;    //存储月份
    
int  day;      //存储天数
}Birthday;
//结构体嵌套,在一个结构体中的结构体成员是另一个结构体类型的变量
typedef   struct  stu{
    
char  name[ 20 ]; //存储学生姓名
    
char  sex ; //存储学生性别
    
int  age ; //存储学生年龄
    
float  score;   //存储学生分数
    
Birthday  birth;  //出生日期
}Stu;

在C语言中,结构体是一种由基本数据类型构成的、并用一个标识符来命名的各种变量的组合,且结构中可以使用不同的数据类型定义结构体类型有多种方式,以下详细介绍: #### 方式一:直接定义结构体变量 这种方式在定义结构体的同时就定义结构体变量,一般格式为: ```c struct 结构名 { 类型 变量名; 类型 变量名; // ... } 结构变量; ``` 示例代码如下: ```c struct Person { char name[20]; int age; float height; } p1, p2; ``` 在上述代码中,定义一个名为`Person`的结构体类型,同时定义了两个该结构体类型的变量`p1`和`p2`。 #### 方式二:先声明结构体类型,再定义结构体变量 先声明结构体类型,之后可以在需要的时候定义类型结构体变量。 ```c struct 结构名 { 类型 变量名; 类型 变量名; // ... }; // 后续定义结构体变量 struct 结构结构变量; ``` 示例代码: ```c struct Book { char title[50]; char author[30]; float price; }; // 定义结构体变量 struct Book book1, book2; ``` 这里先声明了`Book`结构体类型,然后定义了两个`Book`类型的变量`book1`和`book2`。 #### 方式三:使用`typedef`重命名结构体类型 使用`typedef`可以为结构体类型创建一个新的类型名,后续使用新类型名来定义变量会更简洁。 ```c typedef struct 结构名 { 类型 变量名; 类型 变量名; // ... } 新类型名; // 使用新类型定义结构体变量 新类型结构变量; ``` 示例代码: ```c typedef struct Student { char id[10]; char name[20]; int score; } StudentType; // 使用新类型定义结构体变量 StudentType s1, s2; ``` 此代码使用`typedef`为`struct Student`结构体类型创建了新类型名`StudentType`,然后用`StudentType`定义了两个结构体变量`s1`和`s2`。 #### 方式四:定义结构体指针类型 可以在定义结构体的同时定义结构体指针类型,也可以先定义结构体定义指针类型。 ```c // 方式一:定义结构体指针类型的同时重命名 typedef struct Node { int data; struct Node* next; } *linklist; // 方式二:先定义结构体,再重命名结构体指针 struct Node { int data; struct Node* next; }; typedef struct Node* linklist; ``` 上述代码展示了两种定义结构体指针类型的方式,定义后可以使用`linklist`来定义结构体指针变量。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值