C语言-08复合类型-结构体

发布于:2025-02-11 ⋅ 阅读:(57) ⋅ 点赞:(0)

 一、结构体

1.结构体struct
struct关键字,允许自定义复合数据类型,将不同类型的值组合在一起,这种类型称为结构体类型。

2.使用步骤
第一步:创建或声明结构体
第二步:定义结构体变量
第三步:调用并操作结构体变量成员

1.1定义结构体(在main的外部来定义)   以人为例:姓名 年龄 性别 家庭住址 电话

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

//定义方法1:   (推荐)
struct Person {
    char name[20];
    int age;
    char gender[10];
    char address[50];
    char tel[12];//长度要比实际多
};


//定义方法2:(推荐)  
typedef struct Person1 {
    char name[20];
    int age;
    char gender[10];
    char address[50];
    char tel[12];//要比实际多
}Person1;

//定义方法3:  PERSON2对结构体类型struct Person2重命名
typedef struct Person2 {
    char name[20];
    int age;
    char gender[10];
    char address[50];
    char tel[12];//要比实际多
}PERSON2;

//定义方法4:

int main() {

1.2定义结构体变量       

// 方法一    直接赋值初始化
    struct Person p1 = { "佳佳",18,"女","高新区","12345678910" };
//方法二     先声明再赋值
    struct Person p2;

1.3调用结构体成员(赋值)   

 /*p1.name = "喵喵";*/     //不能重新赋值,字符数组名是常量  


    strcpy(p2.name, "喵喵");                              //strcpy   需引入<string.h>头文件
    p2.age = 20;
    strcpy(p2.gender, "男");
    strcpy(p2.address, "中原区");
    strcpy(p2.tel, "10987654321");

1.4查看取出数据

    printf("%s %d %s %s %s\n", p1.name, p1.age, p1.gender, p1.address, p1.tel);
    printf("%s %d %s %s %s\n", p2.name, p2.age, p2.gender, p2.address, p2.tel);

//定义方法3中——查看数据
    PERSON2 p3 = { "肖肖",18,"男","高新区","12345678910" };
    printf("%s %d %s %s %s\n", p3.name, p3.age, p3.gender, p3.address, p3.tel); 

二、结构体成员的访问(使用)

结构体成员的使用,分为两种情况:
1、通过结构体变量访问成员   语法:结构体变量名.成员
2、通过结构体指针变量访问   语法:结构体指针变量->成员 

//通过结构体指针变量访问   语法:结构体指针变量->成员
    strcpy(p3.name, "chhaoyang");
    printf("%s %s\n", p3.name, (&p3)->name);    //成功打印,chhaoyang chhaoyang    
    
    struct Person p6;
    printf("%s %s", p6.name, (&p6)->name);    //没有赋值,打印出垃圾数据

总结:

1.在创建一个结构体变量后,需要给成员赋值。在没有给成员赋值的情况下调用,打印的值是垃圾数据,可能导致程序异常终止。

2.不同结构体变量的成员是独立的,互不影响,一个结构体变量的成员更改,不影响另外一个。


网站公告

今日签到

点亮在社区的每一天
去签到