struct和typedef struct的区别

2023-10-28

在了解struct和typedef struct之前,我们先学习下typedef的定义和用法。
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
C语言里typedef的解释是用来声明新的类型名来代替已有的类姓名,例如:
typedef int CHANGE;
指定了用CHANGE代表int类型,CHANGE代表int,那么:
int a,b;和CHANGE a,b;是等价的、一样的。方便了个人习惯,熟悉的人用CHANGE来定义int。

现在回到struct和typedef struct的区别这个问题上来

  • 用struct node{}来定义结构体时,当我们定义node的结构体变量是,写法为:struct node n;
  • 用typedef struct node{}NODE来定义结构体时,申请变量时,写法为:NODE n,这里NODE就相当于node的别名。

归纳起来就是在使用时,是否可以省去struct这个关键字
举例来说:
在C中定义一个结构体类型时如果要用typedef:

typedef struct Student
{
   int no;
   char name[12];
}Stu,student;

于是在声明变量的时候就可:Stu stu1;或者:student stu2;(Stu 和student 同时为Student的别名)
如果没有typedef即:

struct Student
{
   int no;
   char name[12];
}Stu;

就必须用struct Student stu1;或者struct Stu stu1来声明
另外这里也可以不写Student

typedef struct
{
   int no;
   char name[12];
}Stu;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

struct和typedef struct的区别 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 快速搭建你的MQTT服务器

    MQTT服务器在Linux和Windows上的搭建稍微有些区别 不过使用第三方开源的项目一般会有比较详细的说明文档 不做过多赘述 笔者搭建环境是windows10 ActiveMQ 1 windows MQTT服务器下载 https act
  • neo4j修改节点(包括属性,关系)

    将 傅式级数 这个节点删除 并把 单位冲激序列的傅里叶变换 这个节点 指向 傅氏级数 这个节点 match r where id r 76247 detach delete r match p KnowledgeBlock name 单位冲
  • Sass 条件-循环语句

    学习Sass中 if else for while each 一 条件判断 if else 示例 1 mixin blockOrHidden boolean true 2 if boolean 3 debug boolean is bool
  • OpenCV机器视觉-边缘与轮廓

    边缘与轮廓 基于图像边缘提取或二值化的基础寻找对象轮廓 边缘提取的阈值会最终影响轮廓发现的结果 主要API要有以下俩个 findContours发现轮廓 drawContours绘制轮廓 查找轮廓 处理的图像 轮廓列表 继承关系 cv fi
  • druid的解密

    项目中往往配置的数据库密码不是明文 当我们的数据库配置的密码是一系列的你看不懂的文字时 你就应该考虑是不是是druid的加解密了 使用druiid的加解密 首先应该配置依赖
  • 简易虚拟培训系统-UI控件的应用3

    目录 Button组件的组成 Button组件方法1 在Button组件中设置OnClick 回调 Button组件方法2 在脚本中添加Button类的监听 上一篇使用了文件流读取硬盘数据并显示在Text组件中 本篇增加使用按钮来控制显示哪
  • 牛客网SQL题目解析(答案+解析+理解)

    本文记录了牛客网sql全部题目的答案与难题解析 部分题目包含多种解法 并且涵盖了开窗函数等各种语法点的理解 标题中高亮的题目 是易错题 牛客网刷题链接 牛客网sql在线练习 本文所有语句使用mysql8 0 参考教程资源 mysql教程1
  • 贪心法求解背包问题

    编写程序 输入一组物体重量以及它们的价值大小 对每一个物体求出它对的价值重量比 按由大到小的顺序排列 每一次取出这个比值最大且物体可以被包装下的物体 直到包装满为止 输出装入背包的物体 并给出装入物体的编号以及它们各自的价值和装入背包的物体
  • java commons-chain_Apache commons chain 初探

    Apache commons chain 是什么 Apache common chain 是对责任链设计模式的改造封装 让使用者更加方便的使用 简单回顾一下责任链设计模式 在阎宏博士的 JAVA与模式 一书中开头是这样描述责任链 Chain
  • 收藏

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 仅作学术分享 不代表本公众号立场 侵权联系删除 转载于 来自 知乎 https www zhihu com question 56024942 编辑 AI有道 卷积神经网
  • tnsnames.ora配置小结

    oracle网络配置 三个配置文件 listener ora sqlnet ora tnsnames ora 都是放在 ORACLE HOME network admin目录下 1 sqlnet ora 作用类似于linux或者其他unix
  • 利用一根网线实现新电脑一键迁移文件和软件

    文章目录 问题 方法 Win10下用网线在两台电脑之间高效传输文件数据 第一步设置电脑ip 第二步 利用PING命令测试两台电脑是否连通 360手机助手实现文件迁移 参考文献 问题 最近来到了一个新的实验室 实验室新分配了一台电脑 于是想要
  • OutputStreamWriter在完成write()后 一定要立即关闭,不然写入内容不完整!

    在开发中 同一个程序中需要两次写文件 通过OutputStreamWriter来实现 刚开始为了管理方便 我把这两个操作的关闭过程统一都放到了程序的最后 但是发现写入的内容变得不完整 无论文本长短 最后总是有大约几百个字符没有写进去 后来在
  • el-table 记住选中状态

  • Gitlab部署报错There was an error running gitlab-ctl reconfigure: ruby_block[authorize Grafana with Gitla

    安装gitlab 报错 There was an error running gitlab ctl reconfigure ruby block authorize Grafana with Gitlab monitoring grafan
  • 亲身实践,这份SpringCloud Alibaba全彩笔记助你高效学习

    SpringCloud Aliababa简介 大家好 我最近在学习SpringCloud Alibaba 在此过程中积累了很多学习笔记 为了方便更多人学习 我决定将这套SpringCloud Alibaba全解笔记开源 这套笔记包含Spri
  • 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六)

    优化七 编译器优化 降低miss率 处理器和主内存之间不断扩大的性能差距促使编译器编写者仔细检查内存层次结构 看看编译时优化是否可以提高性能 再次 研究分为指令缺失的改进和数据缺失的改进 接下来介绍的优化可以在许多现代编译器中找到 有些程序
  • Java常用的stream流操作,附源码

    Java常用的stream流操作 附源码 问题背景 stream操作方法 1 去重 2 对象无序去重 通过name去重 3 对象无序去重 通过name且age去重 注意 不是先使用name去重 再使用age去重 3 1 对象有序去重 4 整
  • dockerfile 中 ENTRYPOINT 和 CMD的区别

    大家好 在dockerfile当中 ENTRYPOINT 和CMD的作用于效果是很类似的 我们今天就来说一下它们两者的区别 ENTRYPOINT 指定这个启动的时候启动的时候要运行的命令 可以被替代 CMD 指定这个启动的时候启动的时候要运
  • struct和typedef struct的区别

    在了解struct和typedef struct之前 我们先学习下typedef的定义和用法 typedef为C语言的关键字 作用是为一种数据类型定义一个新名字 这里的数据类型包括内部数据类型 int char等 和自定义的数据类型 str