当前位置: 首页 > news >正文

关于定义结构体别名时 是否加*

在C语言中,使用typedef来定义结构体类型及其指针的别名时,NodeLinkList的声明方式有所不同,这是因为你对它们的目的和用途有不同的设定。

首先,看一下你的代码:

typedef struct { int data; int lenght; // 注意:这里应该是 length,而不是 lenght,可能是一个拼写错误 struct Node *next; // 注意:这里需要使用 struct Node,因为此时 Node 还没有被定义为一个类型别名 } Node, *LinkList;
  1. Node的定义
    • 在这个结构体定义中,Node是结构体的标签(tag),它用于在结构体内部或外部引用这个结构体的类型。
    • typedef的上下文中,Node被同时定义为这个结构体的类型别名。这意味着在typedef之后,你可以使用Node来声明这种类型的变量,而不需要再写struct关键字。
  2. LinkList的定义
    • *LinkListtypedef定义中的第二部分,它声明了一个新的类型别名LinkList,这个别名是指向struct Node的指针的类型。
    • 这里的*表示LinkList是一个指针类型,指向struct Node类型的对象。
    • 因此,当你使用LinkList来声明变量时,你实际上是在声明一个指向Node结构体的指针。

为什么Node没有*LinkList*呢?

  • Node没有*是因为你想要定义一个结构体的类型别名,而不是一个指针类型。这样,你就可以使用Node来创建结构体的实例。
  • LinkList*是因为你想要定义一个指向结构体的指针的类型别名。这样,当你使用LinkList来声明变量时,你得到的是一个指向结构体的指针,这在处理链表等数据结构时非常有用。

总结:

  • Node是结构体的类型别名,用于创建结构体的实例。
  • LinkList是指向结构体的指针的类型别名,用于处理链表中的节点。

另外,请注意在结构体定义中next成员的类型应该是struct Node *而不是Node *,因为在typedef之前Node还没有被定义为一个类型别名,它仍然是一个结构体标签。但在typedef之后,你可以在结构体的定义中直接使用Node *作为next的类型,因为此时Node已经被定义为一个类型别名了。不过,为了保持代码的清晰和一致性,许多程序员会选择在结构体定义中始终使用struct Node *

http://www.lryc.cn/news/463606.html

相关文章:

  • 成语积累学习
  • 基于Java的茶叶商城设计与实现(源码+定制+开发)茶叶电商系统开发、茶叶电商平台开发、茶叶在线销售平台设计与开发
  • 桥接、NAT和仅主机三种网络模式对虚拟机IP地址分配的影响
  • 音乐播放器-0.专栏介绍​
  • 单月变现3W!AI助力沙雕图文爆红小绿书,12篇阅读量破10万+!
  • C语言复习第4章 数组
  • 大数据研究实训室建设方案
  • Unity3D 观察者模式
  • vue从0开始的项目搭建(含环境配置)
  • 力扣61~65题
  • API接口开发流程与指南
  • 如何在Android中进行日志打印和调试?
  • Linux基本使用和程序部署
  • 照片编辑成动态视频用什么软件好
  • JavaWeb合集-SpringBoot项目配套知识
  • Electron入门笔记
  • python 不相交集简介(并查集算法)【Introduction to Disjoint Set (Union-Find Algorithm)】
  • 23种设计模式之工厂方法模式
  • Redis——事务
  • Redis非关系型数据库操作命令大全
  • 基于SpringBoot+Vue+uniapp微信小程序的澡堂预订的微信小程序的详细设计和实现
  • Linux mips架构链接库函数调用plt表汇编代码分析
  • python 作业1
  • Apache 出现 “403 forbidden“ 排查方法
  • vue video播放m3u8监控视频
  • uniapp 获取签名证书 SHA1 自有证书签名打包
  • Open3d开发点云标注工具问题总结(二)
  • 【FreeRTOS】
  • 洛谷 P4995:跳跳! ← 贪心算法
  • 代理 IP 在 AI 爬虫中的关键应用