分三块来讲述:
1 首先:
      
在C中定义一个结构体类型要用typedef:
typedef struct Student
        
{
             int a;
         }Stu;
于是在声明变量的时候就可:Stu
stu1;
如果没有typedef就必须用struct Student stu1;来声明
这里的Stu实际上就是struct
Student的别名。
另外这里也可以不写Student(于是也不能struct Student stu1;了)
         typedef
struct
         {
             int a;
        
}Stu;
但在c++里很简单,直接
         struct Student
         {
           int
a;
         };
于是就定义了结构体类型Student,声明变量时直接Student
stu2;
===========================================
2其次:
在c++中如果用typedef的话,又会造成区别:
      
struct   Student  
       {  
           int   a;  
      
}stu1;//stu1是一个变量  
       typedef   struct   Student2  
       {

int   a;  
         }stu2;//stu2是一个结构体类型

使用时可以直接访问stu1.a
但是stu2则必须先   stu2 s2;
然后              
s2.a=10;
===========================================
3
掌握上面两条就可以了,不过最后我们探讨个没多大关系的问题
如果在c程序中我们写:
       typedef
struct 
       {
           int num;
           int age;
      
}aaa,bbb,ccc;
这算什么呢?
我个人观察编译器(VC6)的理解,这相当于
       typedef
struct 
       {
           int num;
           int age;
      
}aaa;
       typedef aaa bbb;
       typedef aaa
ccc;
也就是说aaa,bbb,ccc三者都是结构体类型。声明变量时用任何一个都可以,在c++中也是如此。但是你要注意的是这个在c++中如果写掉了typedef关键字,那么aaa,bbb,ccc将是截然不同的三个对象。

转载于:https://www.cnblogs.com/wangorg/archive/2011/04/07/2008047.html

typedef struct和struct定义结构体的区别相关推荐

  1. c语言用typedef定义结构体,C语言结构体定义 typedef struct

    c语言规范,定义结构体: typedef struct ANSWER_HEADER { u8 u8Type; u8 u8Code; u32 u32TimeStamp; struct ANSWER_HE ...

  2. golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct

    文章目录 1.结构体struct 1.1 声明结构体 1.2 初始化结构体 以及 传参 2. 结构体数组.append 3. 接口返回 含数组的结构体 常用写法 json string转struct ...

  3. go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别

    入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...

  4. c 定义结构体时提示应输入声明_C语言结构体的坑很多,这6大方法千万要记住!...

    本文福利在文末! C语言可谓是编程界的传奇语言,历经几十年,依然排名前列. 本文主要说的是C语言中的结构体,结构体是C语言中重要的一部分内容,也是C语言中常用的一种数据结构. 一.关于结构体在C语言中 ...

  5. c 定义结构体时提示应输入声明_C|语法的合理性理解和分析

    试想如果你作为C语言或C语言编译器的的设计者,肯定不会任意设置语法规则,除了考虑不能有歧义以外,还会考虑其合理性. 1 效率是第一位的,安全处于次要位置 了解C语言"效率第一.安全次之&qu ...

  6. 关于定义结构体类型的步骤以及应注意的细节

    #include <stdio.h> #include <string.h> //关于定义结构体类型的步骤以及应注意的细节 //定义结构体变量类型 //结构体只定义不初始化,系 ...

  7. 如何定义结构体变量及如何使用

    虽然已经了解结构体类型,但是结构体类型变量的定义只有一种方法么,这个当然不是的,所以我把我所知道的几种方法列出来供给大家参考一下: 首先是第一种,也是我们经常用的一种: 1 #include < ...

  8. c语言中定义结构体指针的作用,C语言结构体定义,使用及指针(1)

    前言 C语言中的结构体作为一大难点,并且对于需要学习数据结构的同学来说,这个结构是每次上课都会遇到的,所以,我们只有更深层次的理解结构体的知识,才能更好的掌握数据结构 结构体用处 结构体到底有什么用? ...

  9. 【C 语言】结构体 ( 结构体类型定义 | 结构体类型别名 | 声明结构体变量的三种方法 | 栈内存中声明结构体变量 | 定义隐式结构体时声明变量 | 定义普通结构体时声明变量 )

    文章目录 一.结构体类型定义 二.结构体类型别名 三.结构体类型变量声明 1.使用结构体类型 ( 别名 ) 声明变量 2. 定义隐式结构体时声明变量 3.定义普通结构体时声明变量 二.完整代码示例 一 ...

  10. Go 学习笔记(27)— type 关键字(类型定义、类型别名、类型查询、定义接口、定义结构体)

    1. 类型别名定义 定义类型别名的写法为: type TypeAlias = Type 类型别名规定: TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类 ...

最新文章

  1. git版本控制工具(二)----本地版本库的常用操作
  2. [日常工作]偷懒创建一个存储过程进行模拟工作.
  3. 汇编解析(6)-二进制文件(嵌入式,纯二进制格式的文件)进行反汇编和汇编
  4. python 使用c模块_您可能没有使用(但应该使用)的很棒的Python模块
  5. 12款很棒的浏览器兼容性测试工具推荐
  6. mysql数据=_mysql 数据操作
  7. pythonm 用法-------list实现购物车
  8. 苹果电脑取色器怎么用?Mac取色器——为你的设计提提速
  9. [2018.11.03 T3] 单调序列
  10. 也说上海女孩的嗲----
  11. 软件测试周刊(第15期):将军赶路 不追小兔
  12. 普及组noip2015年问题求解——重新排列1234和根节点数为2015的二叉树最多有__个叶子节点
  13. 如何用Qlikview在dashboard中创建条形图时,统计时忽略空值
  14. CPU性能衡量参数-主频,MIPS,CPI,时钟周期,机器周期,指令周期
  15. 计算机怎么把磁盘内存分给其他盘,怎么把未分配的内存分给d盘
  16. 数值计算方法复习之曲线拟合的最小二乘法
  17. 【C++】公积金贷款计算器
  18. php扇形分布图,php绘制一个扇形的方法
  19. Nginx 相关介绍(Nginx是什么?能干嘛?)
  20. 今日头条:注册头条号3-7天就度过,掌握这四个关键点

热门文章

  1. 深度学习中拟合是什么意思?
  2. 【Linux】scp IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
  3. Please make sure you have the correct access rights and the repository exists.
  4. 关于二进制兼容(二进制边界)的解释
  5. 德芙背后刻骨铭心的痛
  6. Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)...
  7. Nginx静态资源POST请求返回405状态
  8. Oracle日志切换及频率跟踪脚本
  9. 用ostringstream与istringstream转化字符串
  10. 浅谈C#中的延“.NET研究”迟加载(2)——善用virtual