转:typedef

一、用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;

转载于:https://www.cnblogs.com/amanlikethis/p/3610837.html

用typedef给结构体一个别名相关推荐

  1. c语言struct结构体类型有关typedef定义的本名和别名

    c语言结构体类型的本名 首先,定义结构体的标准语法为 在c语言中,定义结构体的标准语法是: struct A {}; A是这个结构体的[**本名**].在使用本名定义一个新的结构体时, 必须加上str ...

  2. c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)

    1. typedef 最简单使用 [c-sharp] view plain copy typedef long byte_4; // 给已知数据类型long起个新名字,叫byte_4 你可以在任何需要 ...

  3. C语言中struct typedef 以及结构体指针用法

    struct .typedef以及结构体指针用法 typedef用法 结构体指针用法 结构体初始化   typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别 ...

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

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

  5. C++之指针探究(十八):typedef结合结构体指针

    typedef结合结构体指针 例: 运行结果: 附上例代码 //小问学编程 #include <stdio.h>//我们一次定义了2个类型 //第一个是结构体类型,有2个名字:struct ...

  6. C语言:用typedef定义结构

    普通定义结构的方法 //定义结构Date1 struct Date1 {int year; //年int mouth; //月int day; //日 };int main() {struct Dat ...

  7. typedef 给结构体命名

    最近些代码,搞不清楚typdef给结构体命名后,到是定义了个"变量 "还是定义了个"结构名" 结构体一般的写法 struct student //student ...

  8. C语言typedef与结构体

    众所周知,typedef是用来为复杂的声明定义简单的别名.最近在学习结构体的时候,被几个点搞得有点迷糊了. 譬如下面几个: typedef struct stu{int a;} STU, STUARR ...

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

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

  10. typedef与结构体

    目录 结构体类型的重命名: 结构体指针类型的重命名: 结构体类型和结构体指针类型共同的重命名: 结构体类型的重命名: #include<stdio.h> #include<strin ...

最新文章

  1. linux c/c++ 判断是否为中文(不包括中文符号,非正则)
  2. pr图形模板预设怎么使用_技术丨PR怎样安装动态图形模板?Pr mac版怎样调用Mogrt预设?Adobe Premiere导入MOGRTs预设完整教程...
  3. 我的Java后端书架 (2016年暖冬4.0版)
  4. 查看修改Linux时区和时间
  5. 10.1 HTML介绍与开发环境的搭建
  6. miui游戏驱动程序偏好设置_米粉必看:小米官方教你如何关闭 MIUI 广告 - 小米,MIUI...
  7. IIS5、IIS6、IIS7的ASP.net 请求处理过程比较
  8. js访问对方手机文件夹_前端开发——解决vue首次访问太慢的问题
  9. maven spring-mvc mybatis整合
  10. FREERTOS 手册阅读笔记
  11. 倒计时 5 天!Apache Flink Meetup 7.10 北京站,Flink x TiDB 专场等你来!
  12. HenCoder Android 开发进阶:自定义 View 1-4 Canvas 对绘制的辅助 clipXXX() 和 Matrix
  13. java学习-狼人杀
  14. Django博客项目实战
  15. 苹果手机无法连接wifi_手机信号太差?一键查看连接的WIFI离我们多少米
  16. Intent启动拨号盘,实现打电话功能
  17. jQuery的事件冒泡,事件对象和图片跟随
  18. ffmpeg画中画效果
  19. scrapy 两类item_手把手教你进行Scrapy中item类的实例化操作
  20. HackingLab的一套渗透测试题

热门文章

  1. 构造函数与一般函数的区别
  2. java 常用缓存描述
  3. java list增改查_Java编程通过list接口实现数据的增删改查代码示例
  4. uml边界类例子_UML中边界类、控制类和实体类
  5. python切片将两个list合并_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)...
  6. vue对象中的实例属性
  7. python中%的用法_python中%的用法
  8. python房价预测_Python实战:使用线性回归预测房价
  9. 内存测试软件 ddr 4,DDR4内存理论性能测试
  10. python适用于什么系统_Python适合在什么系统