关于结构体的一些认识和理解

1.引用结构体的成员时该用什么引用符?

这个问题其实困扰过我一段时间,如果有和我有一样困惑的请往下看:

当我们选择引用符的时候,有一些同学可能会去看成员变量是什么属性,从而来选择该用什么引用符,以我举例,初期我还没有深入学习结构体的时候一直以为 . 这个引用符是引用数值的,而 -> 这个引用符是用来引用地址的,事实证明这种想法是错误的,那么该怎么选择引用符呢?请看下面一段代码:

像这段代码定义了一个结构体变量stu和一个结构体指针变量*STU,我们选择引用符的时候应该参照结构体变量的属性来选择,假如是结构体指针就用-> 结构体变量就用 . 以这段代码举例,假如想要引用age成员变量就可以采用这两种基本的方法,当然也有很多变形:1 STU->age 2 stu.age 通过这个例子想必大家对引用结构体的成员变量应该很熟悉了,接下来介绍一个比较重要的概念:

2.在结构体学习中使用typedef可能遇到的问题

因为想要初学者更好理解,可能这篇文章会偏向口语化,请大家谅解:

首先typedef这个关键字的作用相当于用复制过来的副本来代替正式副本。举个代码例子:

用过这一段代码之后INTGER就有了int的作用,比如INTEGER a 就等价于int a,引出typedef的作用后,我们就来看一下在结构体学习中使用typedef可能遇到的问题:

其实最常见的错误就是错把结构体标志当作变量,用一段代码举例:

这个代码与第一个问题的代码就相差一个typedef,那么会产生什么影响呢,例如引用成员变量age,有些同学就说,这不简单直接1 STU->age 2 stu.age,用这两种方式引用,结果嘎嘎报错,因为加入typedef这两个*STU,stu的含义就变了它们分别是结构体和结构体指针的标识符,就等价与结构体和结构体指针,

相当于把一整块结构体的代码缩小成几个字母,用这几个字母来定义变量,那该怎么用这个标识符间接的来引用age成原变量呢,用代码举例:

输出结果:

其中该问题需要用malloc函数进行初始化,具体用法(数据类型)malloc(sizeof(数据类型)),以该代码举例:s1=(STU)malloc(sizeof(STU));STU是结构体指针数据类型所以就是为s1分配了一个数据类型为STU(结构体指针的数据类型)因为STU进行了typedef的操作,举之前说过的一个例子:typedef int INTEGER;进行typedef操作后INTEGER就相当于int(整型数据类型)STU就相当于:

struct Stu{

int age;

}*STU;

经过这个例子,我想大家对于结构体的认识更深了一些,之后数据结构可能大量涉及这方面的内容,希望大家好好理解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值