记录-C和指针-第十章-结构和联合

结构变量是标量,和其他变量无差别。
1:结构变量当然也可以作为函数参数,但是一般不这样用,因为效率低
一般都是用指向结构的指针作为参数

2:(重要!)
以下两个结构变量对于编译器来说是不同的。虽然它们的成员列表完全相同。
如:
struct
{
int a;
char b;
float c;
}x;

struct
{
int a;
char b;
float c;
}y;
那怎么办,别害怕,
方法一:
我们有标签字段。标签字段允许*成员列表*提供一个名字。
如:
struct SIMPLE{
int a;
char b;
float c;
};
这时候,这个声明把标签SIMPLE和这个成员列表联系起来。
所以,这时候定义变量如下形式:
struct SIMPLE x;
struyct SIMPLE y[20],*z;

这时候 (x,y,z)都是同一个类型了

方法二:typedef
typedef struct{
int a;
char b;
float c;
}Simple;
使用typedef 创建一种新的类型。区别在于simple 现在是个类型名而不是个结构标签

定义变量方式如下:
Simple x;
不需要加struct了。

总结:理解 两种方式
1:标签 的作用。以及如何定义结构变量。形式如右:struct 标签 变量名

2:typedef 的方式

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
结构变量的两个操作符
1:.操作符,左操作数为 结构变量名,右操作数为成员变量名(对结构成员直接访问)
2:->操作符,左操作数为 指向结构变量的指针,右操作数为成员变量名(对结构成员间接访问)
ps:->操作符中内置蕴含了 间接访问操作。
如:(*cp).f 与cp->f 这两个表达式作用是一样的

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
结构的自引用,合法的方式和不合法的方式。
1合法的是:结构内部 有 该结构类型的指针
2:不合法的是:结构内部有 该结构类型的变量

总结:正是因为结构有这种技巧,结构内部可以有自引用,即可以有指向结构类型的指针,这种特性。

我们可以使用这种特性,去实现高级数据结构(如:链表,如树等)

注意理解本质!本质是,因为C语言的结构这种数据类型,具有了这种特性,所有我们才选用 结构,去实现链表、树。

C语言自带的 #####这种技巧,这种特性#####
即C语言中的结构变量,可以有自引用的合法能力
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
结构变量的操作符没几个,可是具体的使用变量去访问 成员,这些内容还挺多,挺复杂的。
待续:见(10.2 结构、指针和成员章节)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值