本篇内容介绍了“C语言中的结构体如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!结构体的声明结构体的定义:结构体是一些值的集合,这些值
本篇内容介绍了“C语言中的结构体如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
结构体的定义:结构体是一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量。
举例:
//定义结构体类型struct tag//struct结构体关键字 tag结构体标签 struct tag结构体类型{ //成员变量 char name[20]; short age; char telphone[12]; char sex[5];}s1,s2,s3;//s1,s2,s3是三个全局结构体变量int main(){ struct tag s;//s是局部变量 return 0;}
小tips:结构体类型是不占内存空间的,-相当于int在C语言中也是不占内存的,而int a(定义a变量后就会占据内存)
使用typedef定义一个单独的变量,因为我们在编写代码的过程中,重复的书写struct会感觉很繁琐,这样定义之后就可以直接使用改变量作为结构体类型。
举例:
typedef struct tag//定义tag为结构体别名,tag等价于struct tag{ char name[20]; short age; char telphone[12]; char sex[5];}tag;//tag指的是类型,而不是变量int main(){ struct tag s1; tag s2;//struct tag==tag,因此tag可以直接使用 return 0;}
结构体成员的类型可以是标量,数组,指针。其他结构体。
结构体变量的定义和初始化:
#include <stdio.h>typedef struct tag{ //结构体成员类型的定义 char name[20]; short age; char telphone[12]; char sex[5];}tag;int main(){ tag s1={"张三",20,"15372842487"};//结构体变量的初始化 printf("%s的年龄是%d,手机号码为%s\n", s1.name, s1.age, s1.telphone);//输出有关该成员的信息,通过结构体变量找对应的成员变量 struct tag s2={"lisa",19,"8725111"}; printf("%s的年龄是%d,手机号码为%s", s2.name, s2.age, s2.telphone); return 0;}
结果
结构体变量访问成员:结构体变量的成员是通过点操作符(.)访问的,点操作符接受两个操作数。
例如:
struct stu{ char name[20]; int age;}s1={"张三",19};int main(){ printf("%s的年龄是%d", s1.name, s1.age);//s1.name和s1.age就是 通过点操作符访问结构体成员}
输出:
张三的年龄是19
结构体传参数的时候,要传结构体的地址,其原因是函数传参的时候,参数是需要压栈的,如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,因此会导致性能下降。
举例:
typedef struct stu{ char name[20]; int age;}stu;void print1(stu tmp)//传递结构体的值{ printf("name:%s\n", tmp.name); printf("age:%d\n", tmp.age);}void print2(stu* ps)//传递结构体的地址,开辟的空间为一个指针的大小(4/8个字节){ printf("name:%s\n", ps->name); printf("age:%d\n", ps->age);}int main(){ stu s = { "张三",19 }; print1(s); print2(&s); return 0;}
输出:
name:张三
age:19
name:张三
age:19
这里插播一点数据结构的知识:数据结构分为线性数据结构(顺序表,链表,栈,队列)和树形数据结构(二叉树,图)。
顺序表:按照一定的顺序将元素储存起来。
举例:
链表:用一条线将元素连接起来,不要求元素都在同一条线上。
举例:
栈:元素先进后出,后进先出,元素的出入方式类似于手电筒中的电池一样,向一个不含任何元素的栈中放入一个元素的过程叫压栈,删除栈中的一个元素的过程,叫出栈,栈中元素的删除也是由栈顶乡下进行删除,因此如果想删除栈中元素,不能直接删除,必须将在该元素后面放入的元素都进行删除。
举例:
实例分析:
int add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10; int b = 20; int ret = 0; ret = add(a, b); printf("%d\n",ret); return 0;}
输出:
30
函数在调用的时候,实参的传递顺序是从右到左,将a,b放入x,y的过程叫压栈。
“C语言中的结构体如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
--结束END--
本文标题: C语言中的结构体如何使用
本文链接: https://www.lsjlt.com/news/342509.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0