C语言什么是结构体?初步学习C语言结构体三部曲

阅读须知:

结构体部分内容,涉及结构体定义,结构体变量,结构体指针,结构体数组,更多内容敬请关注。

结构体是由若干个"成员"组成的,每一个成员要有成员名称和类型,成员可以是基本数据类型或者一个结构体。一旦定义结构体类型,使用它的方式和其他类型一样,可以声明这个结构体的对象、指针和数组。下面我们先来定义一个描述歌曲的结构体:

上面的song就是一个机构体,它包含有4个成员,成员分别有不同的数据类型,通过上面的例子我们能总结出定义结构的一般格式:struct 结构体名称 {成员列表};

struct是一个C语言的关键字,是定义结构体所必须的。[结构体名称]就是上面的song,有时候可以省略。成员列表必须用花括号{}括起来,最后是分号。

想要使用结构体,就必须先声明结构体变量,如果你想说在上个练习中的song是变量的话,那你就大错特错了。song是我们定义的结构体名称,就想int一样,只不过song是我们定义的,而int是C语言定义好的。我们可以使用2种方式来声明结构体变量:

定义好结构体后再声明变量

在定义机构体时就声明变量

当我们使用这种方式声明结构体变量时,结构体名称song可以省略不写。 如果我们想使用结构体song1中的成员时:song1.title或者song1->title (->:指针只想运算符)

小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程

当我们有很多个结构体变量时,我们可以使用结构体数组,比如我们有3首歌的时候:

或者

结构体指针当然我们也可以先定义结构体数组,然后再对它们进行赋值。

结构体指针顾名思义就是指向结构体的指针,具体的这个指针会指向该结构体的某个变量。声明一个结构体指针变量的形式:

struct 结构名 *结构指针变量名

比如我们声明一个指向song结构体的指针变量:

struct song *ps;struct song song1, song2;

给指针ps赋值则是:

ps = &song1;

当然我们也可以在声明指针时就给ps赋值。我们可以通过指针来使用song1中的成员:(*ps).title或者ps->title

注意

指针ps只能指向结构体变量song1或song2,但是不能指向结构体名song

使用"."和"->"时的不同方式。

结构体指针不但能指向结构体变量,还可以指向结构体数组,比如上个练习中我们使用的songs数组:ps = songs,这代表指针ps指向songs数组的首地址

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏诸葛青云的专栏

迪杰斯特拉(dijkstra)c语言实现方法

迪杰斯特拉(dijkstra)是用来实现查找一个点到其它点最短路径的一种方法。通过查找从起点到最短距离的点,然后将该点放入到集合中,代表以及找到起点到这一点的最...

14320
来自专栏Jackie技术随笔

C/C++协程的简单尝试

最近用tars框架编写后台服务的时候,逐渐抛弃了之前的异步调用方式,而是使用协程,以同步代码的写法实现并发调用,所以希望可以了解学习一下协程的相关知识。

1.4K60
来自专栏大眼瞪小眼

PHP HashTable总结

本篇文章主要是对 PHP HashTable 总结,下面的参考链接是很好的学习资料。学习“散列”这个数据结构—推荐《数据结构与算法分析 C语言描述》

19510
来自专栏诸葛青云的专栏

简述在C语言中, “字符”与“字符串”之间的区别

在C语言中,“字符”与“字符串”之间,是有区别的。这一篇文章中,我们将介绍一下,在C语言中的“字符”与“字符串”,它们之间的区别。

36430
来自专栏诸葛青云的专栏

c语言新手的无奈,几个新手容易犯的错误

如果你是一个c语言新手,你很能试过在写代码的时候看上去明明问题,但是运行的时候就出现了错误。下面的错误你犯过几个?

13910
来自专栏gaoqin31

c语言函数的隐式声明

编译器只有碰到函数原型的时候才知道这个函数的名字,参数类型个数返回值,到函数调用的时候才知道如何生成指令,所以函数原型必须出现在函数调用之前。

32320
来自专栏令仔很忙

VB 中chr(10)、chr(13)和vblf、vbcr、vbcrlf的分别

   cr是回车,只有回车,是到本行的最头上;lf是换行,到下一行;crlf是到下一行的最头上

49910
来自专栏WindCoder

“循环”左移

#include<stdio.h> #include<stdlib.h> #include<math.h> int main(void) { int ...

9020
来自专栏佳爷的后花媛

数组(更新...)

在学习语言时,我们都会遇到数组.大学期间学过C,C++,Java,C#.这些语言中都学了数组,那时候用的不多,概念比较模糊,现在又学了php,里面也有数组,就打...

17530

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励