struct结构类型与typedef
2014-07-21 15:18
423 查看
1. struct结构体定义的形式
struct{成员表列
}变量名表列1,变量名表列2;
例如
structlist{
int a;
char c;
stuct list *next;
};(注意这个分号不能少)
这个结构体的类型名是structlist ;struct只是声明结构体需要的关键字。
如果你要定义一个结构体变量 你就可以 :结构体类型 变量名
如:struct list student;
你是不是觉得写struct list 觉得很麻烦?
那你就可以把struct list起个别名;就是绰号
可以这样
structlist{
int a;
char c;
stuct list *next;
};
typedefstruct list A;
那么你的A student; 就等同与 struct list student;
当然你也可以在声明一个结构体的时候给它起别名,也是比较常用的一种形式:
typedefstruct list{
int a;
char c;
structlist *next;
}A;
2. typedef struct和struct的区别:
typedef struct tagMyStruct{
int iNum;
long lLength;
} MyStruct;
上面的tagMyStruct是标识符,MyStruct是变量类型(相当于(int,char等))。
这语句实际上完成两个操作:
1) 定义一个新的结构类型
struct tagMyStruct
{
int iNum;
long lLength;
};
分析:tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,不论是否有typedef struct 关键字和tagMyStruct一起,构成了这个结构类型,这个结构都存在。
我们可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct 和tagMyStruct合在一起才能表示一个结构类型。
2) typedef为这个新的结构起了一个名字,叫MyStruct。
typedef struct tagMyStruct MyStruct;
因此,MyStruct实际上相当于struct tagMyStruct,我们可以使用MyStruct varName来定义变量。
如下所示:
typedef struct tagMyStruct
{
int iNum;
long lLength;
} MyStruct;
在C中,这个申明后申请结构变量的方法有两种:
(1)structtagMyStruct 变量名
(2)MyStruct 变量名
在c++中可以有
(1)structtagMyStruct 变量名
(2)MyStruct 变量名
(3)tagMyStruct变量名
相关文章推荐
- 结构标签(struct tag)与类型定义(typedef)的区别
- 学点 C 语言(24): 数据类型 - 结构(struct)
- c 的 struct,没有结构体名的结构体数据类型
- C# 中的结构类型(struct type)
- typedef定义的struct类型与struct定义的结构体变量在使用上的区别
- typedef 的理解 typedef struct 结构体
- C数据类型和组合类型(结构、联合、枚举和typedef)
- 结构类型struct
- 自定义数据类型(typedef,enum,struct,union)
- 结构数组,结构数组类型(typedef)
- C语言struct结构类型定义和结构变量说明
- C# 中的结构类型(struct)
- csharp类、引用类型(class)与结构、值类型(struct)的区别
- 类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
- Matlab中的结构类型struct
- 结构struct(值类型)在实际应用要注意的二点:
- C# Struct 结构类型
- C语言 typedef struct自引用结构
- struct sigaction 结构解析 和linux信号类型解释
- 结构类型(struct)与机器位数不同所占用的内存空间