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

您所在的位置:网站首页 缁是什么意思 【C语言】typedef struct node{}a,*b;到底是什么意思?

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

2023-12-23 09:26| 来源: 网络整理| 查看: 265

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

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3