c语言执行一个结构体代码,C语言基础语法之结构体

C语言允许通过结构体来存储不同类型的数据,结构体定义包括struct关键字、成员列表和可选的变量列表。结构体成员可以包含其他结构体或指向自身的指针,常用于实现链表和树等数据结构。结构体变量可以初始化,并通过成员访问运算符(.)访问成员。结构体也可作为函数参数传递,或通过指向结构体的指针进行操作。结构体指针使用->运算符访问成员。
摘要由CSDN通过智能技术生成

C语言中的数组只能允许程序员定义存储相同类型数据。但是结构是C语言编程中允许您存储不同数据类型的数据。

271ee693c326395942d00e02d9994758.png

结构体的定义

要想定义结构,必须用到struct关键字,struct的语句格式:

4e1fd3965ffe6f8d74ac24e17b6a26cc.png

在struct 中声明了一个含有若干新成员的数据类型。

tag是结构体标签。

member-list是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。

variable-list结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。下面是声明 Book 结构的方式:

fef24a1404d2811e7c360364695e6c39.png

在一般情况下,tag、member-list、variable-list这 3 部分至少要出现 2 个。以下为实例:

b0bf4050d1619d479a391ad0637a863e.png

在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令 t3=&s1,则是非法的。

结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。

8493ccfd19e3d82b158a91f06cb33d10.png

如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明,如下所示:

e3b5459cec400f57e8f24fc648eefd9e.png

结构体变量的初始化

和其它类型变量一样,对结构体变量可以在定义时指定初始值。

e13e1c28844a6ff0cd14717c3ac39948.png

执行输出结果为:

title : C 语言author: RUNOOB subject:编程语言book_id:123456

访问结构成员

为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。您可以使用struct关键字来定义结构类型的变量。下面的实例演示了结构的用法:

513761ffd10cb4bc60c1a6385b89eb66.png

c800aa2a62ea9ac3614a4701feb6c7e0.png

当上面的代码被编译和执行时,它会产生下列结果:

405b14757320155e006a1d97097d5f28.png

结构作为函数参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。您可以使用上面实例中的方式来访问结构变量:

dd65025a2547845ed07213283046f7e0.png

19f2b0fac756bdcac4a966dd1101b08e.png

当上面的代码被编译和执行时,它会产生下列结果:

977cdc9edfae4fabf4e117c18e39954d.png

指向结构的指针

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:

structBooks*struct_pointer;

现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:

struct_pointer =&Book1;

为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:

struct_pointer->title;

让我们使用结构指针来重写上面的实例,这将有助于您理解结构指针的概念:

39f08d937299589151c4c9312f6ceab6.png

11eb606616ab936624ab44634e7aa0b5.png

当上面的代码被编译和执行时,它会产生下列结果:

cf8892ede53f2c59ae305cbe38077ad3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值