C语言——结构体

前言:大家好😍,本篇主要介绍了C语言结构体部分的内容

🌸格格Code的C语言🌸有关C语言的知识点都在这里,大家可以看看对自己有没有帮助🙋🙋🙋 


一、结构体类型的声明

1.1 结构体的基础知识

概念:结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。结构体是用户自定义的一种数据类型,可以将不同类型的数据组合在一起,形成一个逻辑上的整体。

数组是一组相同类型元素的集合

类型:char,int,short,double这些都叫内置类型,只可以用来表示一些简单的对象,例如表示成绩用(float)类型,表示学号用(int)类型。只能表示一些单独的值。

但是在生活中,有许多的复杂对象。例如:表示人:名字(char)+电话(int)+身(double)等相关属性。这些数据如果单独定义会很复杂,所以我们对复杂对象进行整体的描述时就会使用的到结构体。

1.2 结构体的声明

struct tag   //结构体名称
{
  member-list;  //成员列表
}varible-list;  //变量列表

struct是结构体关键字

tag是结构体名称

struct tag 结构体类型 

类比建房子:结构体不占用内存空间相当于图纸       主函数占空间相当于房子 

1.3 结构体成员类型

结构体的成员可以是标量,数组,指针,甚至是其他结构体 

1.4结构体变量的定义和初始化

🌸1)先定义结构体类型,再定义结构体变量

struct student {  //定义结构体类型
    //结构体成员列表
    char name[20];
    char num[12];
    char sex[5];
    int high;
};
struct student stu1,stu2;  //定义结构体变量  

🌸2)定义结构体类型的同时定义结构体变量 

struct student {  //结构体类型
    //结构体成员
    char name[20];
    char num[12];
    char sex[5];
    int high;
}stu1,stu2;  //结构体变量  

🌸3)直接定义结构体变量 

struct     //结构体类型
{ 
    //结构体成员
    char name[20];
    char num[12];
    char sex[5];
    int high;
}stu1,stu2;  //结构体变量  

二、结构体初始化

 struct Peo p1 = { "张三", "15596668862", "男", 181 };  //定义并初始化成员
 struct St s = { {"lisi", "15596688888", "女", 166}, 100, 3.14f };

 三、结构体成员访问

3.1 通过点操作符(.)访问结构体变量的成员

结构体变量.成员名 

#include <stdio.h>

// typedef为结构体定义别名
typedef struct {
    char name[50];
    int age;
    float height;
} Person;  //别名Person结构体类型

int main() {
    // 创建一个 Person 类型的变量 person,并初始化
    Person person = {"John Doe", 30, 1.75};

    // 使用点操作符访问结构体变量的成员
    printf("Name: %s\n", person.name); // 访问并打印姓名
    printf("Age: %d\n", person.age);  
    printf("Height: %.2f meters\n", person.height); //

    // 修改结构体变量的成员
    person.name = "Jane Doe"; // 修改姓名
    person.age = 25;         
    person.height = 1.65;    

    // 再次使用点操作符访问结构体变量的成员
    printf("%s\n", person.name); // 访问并打印更新后的姓名
    printf(" %d\n", person.age);  
    printf(" %.2f meters\n", person.height); 
    return 0;
}
#include <stdio.h>

// 定义结构体类型 Peo
struct Peo {
    char name[20];
    char tele[12];
    char sex[5];
    int high;
};

// 定义结构体类型 St,它包含一个 Peo 类型的成员 p
struct St {
    struct Peo p;
    int num;
    float f;
};

int main() {
    // 定义并初始化结构体变量 p1
    struct Peo p1 = {"张三", "15596668862", "男", 181};
    // 定义并初始化结构体变量 s
    struct St s = {{"lisi", "15596688888", "女", 166}, 100, 3.14f};

    // 打印 p1 的成员信息
    printf("%s %s %s %d\n", p1.name, p1.tele, p1.sex, p1.high);
    // 打印 s 的成员信息
    printf("%s %s %s %d %d %f\n", s.p.name, s.p.tele, s.p.sex, s.p.high, s.num, s.f);

    return 0;
}

输出:

张三 15596668862 男 181
lisi 15596688888 女 166 100 3.140000

⚠️使用 printf 函数打印 s 的所有成员信息,注意 s.p 用于访问 sPeo 类型的成员 p

3.2 通过箭头操作符(—>)访问结构体变量的成员 

#include <stdio.h>
struct Peo {
    char name[20];
    char tele[12];
    char sex[5];
    int high;
};
// 定义结构体类型 St,包含一个 Peo 类型的成员 p
struct St {
    struct Peo p;
    int num;
    float f;
};

void print1(struct Peo p) {
    printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);
}
void print2(struct Peo* sp) {
    printf("%s %s %s %d\n", sp->name, sp->tele, sp->sex, sp->high);
}

int main() {
    struct Peo p1 = { "张三", "15596668862", "男", 181 }; 
 //定义并初始化成员  
    struct St s = { {"lisi", "15596688888", "女", 166}, 100, 3.14f };
   
    print1(p1);   // 调用 print1 函数打印 p1 的成员信息
    print2(&p1);

    return 0;
}

 输出:
张三 15596668862 男 181
张三 15596668862 男 181

⚠️函数 void print2(struct Peo* sp) 的定义表示这是一个名为 print2 的函数,它接受一个参数 sp。这个参数是一个指向 struct Peo 结构体类型的指针。

⚠️* sp:星号表示 sp 是一个指针,它存储了 Peo 结构体实例的内存地址。

⚠️函数体内部可以使用指针 sp 来访问和操作它所指向的结构体实例的成员。由于 sp 是一个指针,所以在访问结构体成员时需要使用箭头操作符(->而不是点操作符(.)。

⚠️print2(&p1):p1 是一个结构体变量,&p1 则表示获取 p1 这个结构体变量的内存地址。

四 、结构体传参


总结

提示:本篇知识结构体简单部分的内容,有点难度的还未更新,之后会继续上传!谢谢大家阅读!🌸🌸🌸

 🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值