【C语言】typedef struct node{}a,*b;到底是什么意思?

  很多小伙伴知道 typedef int a;的作用相当于将int 换名为a;
也知道typedef struct node{xxx}b;的意思是将这个结构体命名为b;但是对于这样的代码

typedef struct Node
{
    int value1;
    int value2;
}*p,a;

确不知道这两个表示的什么。首先我们先明确一个typedef最基本的定义

typedef int a,b;

上述语句是将a和b同时作为int的名字替换。也就是说我们既可以用a代表int也可以用b代表int。
 再看看我们以前对于指针的定义:

int* a,b;

这个语句的意思大家知道吧?是定义一个int*型变量a,定义一个int型变量b;仔细思考一下为什么b定义的是个int类型呢,是因为这个语句也可以等价于如下的语句:

int* a;
int b;

也就是说*号是与a作结合的,b不在这个星号的作用域之内。好了,明确了这两点,我们再回过头来看看最开始的问题

typedef struct Node
{
    int value1;
    int value2;
}*p,a;

这个代码是什么意思呢?中间的{}我们先把他遮住,再把这个代码拆开,也就变成了这样

typedef struct Node *p;
typedef struct Node a;

也就是说我们将 struct Node*这个结构体指针类型换名为p,将struct Node 这个结构体换名为a;
这时候我们就可以进行如下操作了:

p sp;//sp是个结构体指针类型
a s;//s是个结构体类型
sp->value1 = 3;//结构体指针使用间接引用
s.value1 = 2;//结构体使用直接饮用

这下大家明白了吧?顺便提醒一下直接执行sp->value1 = 3;这个操作程序会出现错误,因为你并没有给指针分配空间对吧?如果这个不了解的话可以看看这个博客:
指针能不能不分配空间直接使用?

如果觉得有帮助,点个赞和关注谢谢~如果有这个问题相关的疑问,欢迎在下面留言,我看到后会及时解答并补充博客~

  • 228
    点赞
  • 305
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值