千家信息网

C语言结构体应用实例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"C语言结构体应用实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C语言结构体应用实例分析"文章能帮助大家解决问题。1、结构体的声明1.
千家信息网最后更新 2026年11月04日C语言结构体应用实例分析

这篇文章主要介绍"C语言结构体应用实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C语言结构体应用实例分析"文章能帮助大家解决问题。

1、结构体的声明

1.1 结构的基础知识

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量

1.2 结构的声明

struct tag{        member-list;}variable-list;

下面几种方式都一样,定义了学生的结构体类型,内容包括:名字、年龄、性别、学号

//举例1struct Stu{        char name[20];//名字        int age;//年龄        char sex[5];//性别        char id[20];//学号};//分号不能丢//举例2struct Stu{        char name[20];//名字        int age;//年龄        char sex[5];//性别        char id[20];//学号}s1,s2,s3;//定义了3个结构体类型的变量//举例3typedef struct stu stu;//举例4typedef struct stu{        char name[20];        int age;        char sex[8];        float score;}stu;int main(){        struct stu stu4;//局部变量        struct stu stu5;        stu stu6;//全局变量        return 0;}

1.3 结构成员的类型

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

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

struct Point{        int x;        int y;}p1; //声明类型的同时定义变量p1struct Point p2; //定义结构体变量p2//初始化:定义变量的同时赋初值。struct Point p3 = { x, y };struct Stu //类型声明{        char name[15];//名字        int age; //年龄};struct Stu s = { "zhangsan", 20 };//初始化struct Node{        int data;        struct Point p;        struct Node* next;}n1 = { 10, {4,5}, NULL }; //结构体嵌套初始化struct Node n2 = { 20, {5, 6}, NULL };//结构体嵌套初始化

2、结构体成员的访问

2.1 点操作符访问

结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数:变量名.成员

struct S s;strcpy(s.name, "zhangsan");//使用.访问name成员s.age = 20;//使用.访问age成员

2.2 ->操作符访问

指向一个结构体的指针,结构体指针访问指向变量的成员,变量名 ->成员

struct Stu{        char name[20];        int age;};void print(struct Stu* ps){        printf("name = %s age = %d\n", (*ps).name, (*ps).age);//使用结构体指针访问指向对象的成员        printf("name = %s age = %d\n", ps->name, ps->age);}

3、结构体传参

3.1 参数是结构体类型的变量

struct point{        int x;        int y;}p1 = {10,20};struct s//结构体{        char c;        struct point sp;        double d;        char arr[20];//字符串};void print1(struct s ss)//传参结构体{        printf("%c\n", ss.c);        printf("%d\n", ss.sp.x);        printf("%d\n", ss.sp.y);        printf("%lf\n", ss.d);        printf("%s\n", ss.arr);}int main(){        struct point p1 = { 100, 200 };//定义1个变量,并初始化        struct s ss = { 'w',{100,20},5.5,"hello" };//初始化        ss.c = 'b';        ss.sp.x = 1000;        ss.sp.y = 2000;        ss.d = 3.14;        //ss.arr = "wolrd";错误的方法        strcpy(ss.arr, "world");//字符串赋值函数        print1(ss);//打印结构体变量}

3.2 参数是结构体类型的变量的地址

struct point{        int x;        int y;}p1 = {10,20};struct s{        char c;        struct point sp;        double d;        char arr[20];//字符串};void print2(struct s* ss)//传参地址{        printf("%c\n", ss->c);        printf("%d\n", ss->sp.x);        printf("%d\n", ss->sp.y);        printf("%lf\n", ss->d);        printf("%s\n", ss->arr);}int main(){        struct s ss = { 'w',{100,20},5.5,"hello" };//初始化        ss.c = 'b';        ss.sp.x = 1000;        ss.sp.y = 2000;        ss.d = 3.14;        //ss.arr = "wolrd";错误的方法        strcpy(ss.arr, "world");        print2(&ss);//打印结构体变量}

3.3 结构体传参对比

上面两种函数实现的效果一样,见下图:

函数print1接受的是结构体类型变量,是形参,另外开辟了空间,将实参拷贝了一份,占用内存空间大

- 函数print2接受的是结构体类型的地址,定义结构体类型的指针接收地址,只开辟了空间存放地址,占用内存空间小

**要注意:**函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。因此,结构体传参的时候,要传结构体的地址,即函数 print2 比函数 print1 效果好。

关于"C语言结构体应用实例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

结构 变量 成员 类型 函数 地址 指针 参数 名字 年龄 操作符 知识 空间 实例 实例分析 语言 分析 应用 字符 字符串 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国互联网科技工作委员会毛军 互联网科技有限公司图片 互联网下的科技发展 与互联网科技公司 金融科技与互联网金融 互联网科技的未来发展 字节跳动和互联网科技 中化能源互联网科技招聘 上海宁丞科技互联网 哈尔滨屹滨互联网科技有限公司 南博望互联网科技有限公司 群盈汇互联网科技有限公司 互联网方面的科技前沿 上海钢联属于互联网科技股吗 智帮互联网科技公司最近动向 银行科技岗属于互联网吗 领航科技大厦互联网公司 上海乐五互联网科技有限公司 北京互联网科技类企业分布 瑞安市蟠桃会互联网科技有限公司 南京欣网互联网络科技 互联网科技会 亿策互联网科技 互联网科技论文 互联网科技上市公司 昭通云南众福互联网科技有限公司 辽宁互联网新科技 广西互联网科技孵化中心 有人说阿里系是互联网科技企业 第三届互联网大会安防黑科技
0