1、没有设置结构体名,相当于一个匿名结构体,没有结构体名,后面就没法用该结构体定义新的变量。

#include<stdlib.h>
#include<stdio.h>
struct{int x;int y;
}Test;
int main()
{Test.x = 100;printf("%d",Test.x);
} 

2、设置了结构体名A,就可以利用struct a Test2, 来构造一个新的结构体变量Test2,相比上一个的优点是可以直接在main函数里继续构造新的结构体变量(因为有结构体名字了)

#include<stdlib.h>
#include<stdio.h>
struct A{int x;int y;
}Test1;
int main()
{struct A Test2;Test1.x = 50;Test2.x = 100;printf("%d,%d",Test1.x,Test2.x);
} 

3、使用 typedef 的结构体,其实末尾这里的Test1,Test2 不是 结构体的变量,而都是struct B的别名,也就是说使用 typedef 的时候没有默认的结构体变量,需要构造新的结构体变量的话,必须通过main函数里的 Test1 test1 或者 Test2 test2来构造一个结构体变量 test1或者test2,相比2来说,拥有typedef 的结构体少了一个能够设置初始的结构体变量的地方,但是在main函数中可以方便的少写 struct 这个关键字

#include<stdlib.h>
#include<stdio.h>
typedef struct B{int x;int y;
}Test1,Test2;
int main()
{Test1 test1;Test2 test2;test1.x = 50;test2.x = 100;printf("%d",test1.x);
} 

4、这里相当于结构体没有名字,是一个匿名的结构体,此时末尾的Test也是一个别名而已,只不过是匿名结构体的别名。

​
#include<stdlib.h>
#include<stdio.h>
typedef struct{int x;int y;
}Test;
int main()
{Test test;test.x = 100;printf("%d",test.x);
} ​

 总结:

有typedef的时候,末尾Test的这个位置就变成了结构体的别名,就是等价struct A。

没有typedef的时候,末尾Test的这个位置就是一个结构体变量。struct后面有名字就方便后续增加结构体变量,没有名字就是一个匿名的结构体,后续不能增加结构体变量。

C语言:struct和typedef相关推荐

  1. C语言结构体typedef struct详解

    1.typedef关键字 C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字.下面的实例为单字节数字定义了一个术语 BYTE: typedef unsigned char BY ...

  2. 三言两语搞懂c语言之struct与typedef(小白必看)

    一.Struct 1.1 struct含义 1.2 struct用法1 1.3 struct用法2 1.4 struct用法3 二.typedef 三.Struct与typedef 一.Struct ...

  3. C语言和C++中的struct 和typedef struct

    C语言 中 // c typedef struct Student {int age; } S; 等价于 // c struct Student { int age; }; typedef struc ...

  4. struct和typedef struct彻底明白了,引用自https://www.cnblogs.com/qyaizs/articles/2039101.html

    struct和typedef struct彻底明白了 struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: t ...

  5. struct和typedef struct的区别

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

  6. struct与typedef struct的区别

    typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便. 具体区别在于: 若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,st ...

  7. struct 和 typedef struct 的区别

    文章目录 前言 struct和typedef struct的区别 C语言中的struct和typedef struct struct typedef struct C++中的struct和typede ...

  8. 位域,extern “C“,struct 和 typedef struct,struct 和 class,union 联合,friend友元类,using,::范围解析运算符

    文章目录 位域 extern "C" struct 和 typedef struct C++中struct 和 class union联合 explicit(显式)关键字 frie ...

  9. 用JAVA定义两个结构体_c语言struct结构体的定义和使用

    c语言由于不像java,c#,c++等语言有对象,所以就用struct结构体来表示,其实作用是差不多的,下面来快速学习c语言struct结构体的定义和使用,以学生类student来举例,有三种定义方式 ...

最新文章

  1. Pycharm问题归纳
  2. hdu1305Immediate Decodability(字典树)
  3. MyEclipse10中导入的jquery文件报错(出现红叉叉,提示语法错误)
  4. Verilog中的条件编译语句 `ifdef、`else、`endif 等
  5. Linux - 收藏集 - 掘金
  6. 缓存-分布式锁-缓存一致性解决
  7. 前端学习(1800):前端调试之清除浮动练习1
  8. 目标检测中的不平衡问题综述
  9. 计算机二级offic高级应用备考,备考2021计算机二级—二级MS Office高级应用高频考点.pdf...
  10. Linux内核分析 读书笔记 (第四章)
  11. 数据交互之封装request请求(微信小程序篇)
  12. python趣味编程_戏说《西游记》之Python趣味编程:第四回 拜师学艺 破盘中之谜...
  13. win10 安装 MYSQL5.7.21 解压版 教程
  14. 电池BMS软件架构设计和电池安全标准及测试
  15. C/C++运行错误收藏
  16. 【MySQL练习】数据查询(02)-简易版
  17. FlushMouseMsgBuffer
  18. 【UNR #6 C】稳健型选手(分治)(主席树)(二分)
  19. Oracle登录错误12560,登录错误-----ORA-12560: TNS: 协议适配器错误
  20. 北京-绕五环骑行(完美环绕)2017-03-11

热门文章

  1. supervisord 常见问题处理
  2. 【生活纪实】【读书有感】善思者要克服的是犹豫
  3. WebRTC 教程一:WebRTC信令、架构和 API 入门
  4. 线上讲座 “计算机科学与技术”学科导论 笔记
  5. Dubbo 是什么?
  6. 网络安全工程师能拿高薪的秘密!
  7. Theme.AppCompat.Light.DarkActionBar找不到文件问题
  8. 通过内网穿透实现外网数据库与内网数据库互相访问
  9. 一文搞定c++多线程
  10. SpringMVC框架工作流程图及工作原理