博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用typedef给结构体一个别名
阅读量:6474 次
发布时间:2019-06-23

本文共 914 字,大约阅读时间需要 3 分钟。

转: 

一、用typedef给结构体一个别名 

typedef struct tagMyStruct{  int iNum; long lLength;} MyStruct;

 这语句实际上完成两个操作:

1、 定义一个新的结构类型

struct tagMyStruct{  int iNum;  long lLength; };

分析:

tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct 关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。

我们可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct 和tagMyStruct合在一起才能表示一个结构类型。

2、typedef为这个新的结构起了一个名字MyStruct

typedef struct tagMyStruct MyStruct;

分析:

MyStruct实际上相当于struct tagMyStruct,我们可以使用MyStruct varName来定义变量。

新结构建立的过程中遇到了pNext域的声明,类型是pNode,要知道pNode表示的是类型的新名字,那么在类型本身还没有建立完成的时候,这个类型的新名字也还不存在,也就是说这个时候编译器根本不认识pNode。

二、其他写法

1、写法1

typedef struct tagNode { char *pItem; struct tagNode *pNext;} *pNode;

2、写法2

typedef struct tagNode *pNode;struct tagNode { char *pItem; pNode pNext;};

注意:在这个例子中,你用typedef给一个还未完全声明的类型起新名字。C语言编译器支持这种做法。

3、规范做法 

struct tagNode{ char *pItem; struct tagNode *pNext;};typedef struct tagNode *pNode;

 

转载地址:http://zopko.baihongyu.com/

你可能感兴趣的文章
NYOJ 97
查看>>
poj2378
查看>>
【译】SQL Server误区30日谈-Day12-TempDB的文件数和需要和CPU数目保持一致
查看>>
不为技术而技术:大型网站架构演化解析
查看>>
Java文件清单列表
查看>>
js url传值中文乱码之解决之道
查看>>
Atitit.获取某个服务 网络邻居列表 解决方案
查看>>
Trusty TEE
查看>>
[LeetCode] Reverse String 翻转字符串
查看>>
学习iOS【3】数组、词典和集合
查看>>
Hessian 原理分析--转
查看>>
转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端
查看>>
easyui传入map的数据前台展示出tree格式数据
查看>>
悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
查看>>
java.math.BigDecimal
查看>>
Vitamio中文API文档(4)—— VitamioInstaller
查看>>
河内之塔
查看>>
图像处理之基础---内窥镜医学图像增强
查看>>
yii框架常用url地址
查看>>
python3.4学习笔记(十六) windows下面安装easy_install和pip教程
查看>>