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

【C语言】typedef struct node{}a,*b;到底是什么意思?  很多小伙伴知道typedefinta;的作用相当于将int换名为a;也知道typedefstructnode{xxx}b;的意思是将这个结构体命名为b;但是对于这样的代码typedefstructNode{intvalue1;intvalue2;}*p,a;确不知道这两个表示的什么。首先我们先明确一个typedef最基本的定义typedef…

【C语言】typedef

  很多小伙伴知道 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;这个操作程序会出现错误,因为你并没有给指针分配空间对吧?如果这个不了解的话可以看看这个博客:
指针能不能不分配空间直接使用?

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

今天的文章【C语言】typedef struct node{}a,*b;到底是什么意思?分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/30881.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注