很多小伙伴知道 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;到底是什么意思?分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30881.html