typedef struct和struct定义结构体的区别
分三块来讲述:
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定义结构体的区别相关推荐
- c语言用typedef定义结构体,C语言结构体定义 typedef struct
c语言规范,定义结构体: typedef struct ANSWER_HEADER { u8 u8Type; u8 u8Code; u32 u32TimeStamp; struct ANSWER_HE ...
- golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct
文章目录 1.结构体struct 1.1 声明结构体 1.2 初始化结构体 以及 传参 2. 结构体数组.append 3. 接口返回 含数组的结构体 常用写法 json string转struct ...
- go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别
入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...
- c 定义结构体时提示应输入声明_C语言结构体的坑很多,这6大方法千万要记住!...
本文福利在文末! C语言可谓是编程界的传奇语言,历经几十年,依然排名前列. 本文主要说的是C语言中的结构体,结构体是C语言中重要的一部分内容,也是C语言中常用的一种数据结构. 一.关于结构体在C语言中 ...
- c 定义结构体时提示应输入声明_C|语法的合理性理解和分析
试想如果你作为C语言或C语言编译器的的设计者,肯定不会任意设置语法规则,除了考虑不能有歧义以外,还会考虑其合理性. 1 效率是第一位的,安全处于次要位置 了解C语言"效率第一.安全次之&qu ...
- 关于定义结构体类型的步骤以及应注意的细节
#include <stdio.h> #include <string.h> //关于定义结构体类型的步骤以及应注意的细节 //定义结构体变量类型 //结构体只定义不初始化,系 ...
- 如何定义结构体变量及如何使用
虽然已经了解结构体类型,但是结构体类型变量的定义只有一种方法么,这个当然不是的,所以我把我所知道的几种方法列出来供给大家参考一下: 首先是第一种,也是我们经常用的一种: 1 #include < ...
- c语言中定义结构体指针的作用,C语言结构体定义,使用及指针(1)
前言 C语言中的结构体作为一大难点,并且对于需要学习数据结构的同学来说,这个结构是每次上课都会遇到的,所以,我们只有更深层次的理解结构体的知识,才能更好的掌握数据结构 结构体用处 结构体到底有什么用? ...
- 【C 语言】结构体 ( 结构体类型定义 | 结构体类型别名 | 声明结构体变量的三种方法 | 栈内存中声明结构体变量 | 定义隐式结构体时声明变量 | 定义普通结构体时声明变量 )
文章目录 一.结构体类型定义 二.结构体类型别名 三.结构体类型变量声明 1.使用结构体类型 ( 别名 ) 声明变量 2. 定义隐式结构体时声明变量 3.定义普通结构体时声明变量 二.完整代码示例 一 ...
- Go 学习笔记(27)— type 关键字(类型定义、类型别名、类型查询、定义接口、定义结构体)
1. 类型别名定义 定义类型别名的写法为: type TypeAlias = Type 类型别名规定: TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类 ...
最新文章
- git版本控制工具(二)----本地版本库的常用操作
- [日常工作]偷懒创建一个存储过程进行模拟工作.
- 汇编解析(6)-二进制文件(嵌入式,纯二进制格式的文件)进行反汇编和汇编
- python 使用c模块_您可能没有使用(但应该使用)的很棒的Python模块
- 12款很棒的浏览器兼容性测试工具推荐
- mysql数据=_mysql 数据操作
- pythonm 用法-------list实现购物车
- 苹果电脑取色器怎么用?Mac取色器——为你的设计提提速
- [2018.11.03 T3] 单调序列
- 也说上海女孩的嗲----
- 软件测试周刊(第15期):将军赶路 不追小兔
- 普及组noip2015年问题求解——重新排列1234和根节点数为2015的二叉树最多有__个叶子节点
- 如何用Qlikview在dashboard中创建条形图时,统计时忽略空值
- CPU性能衡量参数-主频,MIPS,CPI,时钟周期,机器周期,指令周期
- 计算机怎么把磁盘内存分给其他盘,怎么把未分配的内存分给d盘
- 数值计算方法复习之曲线拟合的最小二乘法
- 【C++】公积金贷款计算器
- php扇形分布图,php绘制一个扇形的方法
- Nginx 相关介绍(Nginx是什么?能干嘛?)
- 今日头条:注册头条号3-7天就度过,掌握这四个关键点
热门文章
- 深度学习中拟合是什么意思?
- 【Linux】scp IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
- Please make sure you have the correct access rights and the repository exists.
- 关于二进制兼容(二进制边界)的解释
- 德芙背后刻骨铭心的痛
- Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)...
- Nginx静态资源POST请求返回405状态
- Oracle日志切换及频率跟踪脚本
- 用ostringstream与istringstream转化字符串
- 浅谈C#中的延“.NET研究”迟加载(2)——善用virtual