A>>>>>>>>>>>>>>>>>>>>>>>>

typedef struct
                {
                    ...
                    ...
                }POINT,*POINT_P;

     POINT为结构名,这个名字主要是为了在结构体中包含自己为成员变量的时候有用
                POINT_T为struct  POINT的别名
                POINT_P为struct  POINT*的别名

POINT为结构体名,可声明对象;
                POINT_P为struct  POINT*的别名,等同于typedef POINT * POINT_P;

* 结构体指针如何使用(二层指针)

#include <iostream>
        using namespace std;
        typedef struct {
        int x;
        int y;
        }point,*_point; //定义类,给类一个别名
        //验证 typedef point * _point;
        int main()
        {
            _point *hp;
            point pt1;
            pt1.x = 2;
            pt1.y = 5;
            _point p;
            p = &pt1;
            hp = &p;

cout<<  pt1.x<<" "<<pt1.y <<endl;
            cout<< (**hp).x <<" "<< (**hp).y <<endl;
            return 0;
        }
        
        //运行结果:2 5
                       2 5

B>>>>>>>>>>>>>>>>>>>>>>>>

typedef用来定义新的数据类型,通常typedef与结构体的定义配合使用。使用typedef的目的使结构体的表达更加简练(所以说typedef语句并不是必须使用的)。

定义一个名字为TreeNode的结构体类型(现在并没有定义结构体变量,并不占用内存空间):

struct TreeNode{ int Element; struct TreeNode* LeftChild; struct TreeNode* RightChild;};

为结构体起一个别名Node,这时Node就等价于struct TreeNode

typedef struct TreeNode Node;

将结构体的定义和typedef语句可以连在一起写:

typedef struct TreeNode{ int Element; struct TreeNode* LeftChild; struct TreeNode* RightChild;}Node;
  • 注意不要与“定义结构体类型的同时定义结构体类型变量”混淆:
使用typedef关键字定义结构体类型 定义结构体类型的同时定义结构体类型变量
typedef struct student
{
        int age;
        int height;
}std;

//std相当于struct student

struct student
{
        int age;
        int height;
}std1,std2;

//定义了student数据类型的结构体和std1
、std2结构体变量

二、使用typedef定义结构体指针

定义一个名为TreeNode的结构体,和指向该结构体类型的指针PtrToTreeNode(不使用typedef):

struct TreeNode{ int Element; struct TreeNode* LeftChild; struct TreeNode* RightChild;};struct TreeNode *PtrToTreeNode; //定义指针

使用typedef关键字用一个单词Node代替struct TreeNode,并定于指向该结构体类型的指针PtrToTreeNode:

struct TreeNode{ int Element; struct TreeNode* LeftChild; struct TreeNode* RightChild;};typedef struct TreeNode Node; //用Node代替struct TreeNodeNode *PtrToTreeNode;//定义指针

将结构体的定义typedef连在一起写,再次缩短代码:

typedef struct TreeNode{ int Element; struct TreeNode* LeftChild; struct TreeNode* RightChild;}Node; //定义结构体并用Node代替struct TreeNodeNode *PtrToTreeNode; //定义指针

还可以继续缩短代码,直接定义了指向结构体类型的指针,但是这种写法没有为结构体起一个别名。

typedef struct TreeNode{ int Element; struct TreeNode* LeftChild; struct TreeNode* RightChild;} *PtrToTreeNode; //直接定义指针在定义结构体时,省略struct后面的结构体名也是可以的,但是由于没有名字,操作(如定义结构体变量)只能在定义的同时进行。
C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
typedef struct File
{
......
} FileInfo;

取FileInfo为struct file 的别名

typedef struct File
{
.....
}FileInfo, *FileP;

经过我的求证:

给struct file 取个别名为FileInfo

给struct file * 取个别名为FIleP;

如:FileP L;//头指针;

typedef struct 指针结构体使用方法的更多相关文章

  1. typedef struct与struct定义结构体

    今天在定义结构体的时候发现typedef struct与struct定义结构体有一些不同之处: 结构也是一种数据类型, 能够使用结构变量, 因此,  象其他 类型的变量一样, 在使用结构变量时要先对其 ...

  2. 【AT91SAM3S】SAM3S-EK Demo工程中,LCD驱动程序的加载(函数指针结构体)

    为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪. 花了好久,追踪到了这个执行过程. 进入main ...

  3. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  4. struct stat结构体简介

    在使用这个结构体和方法时,需要引入: <sys/types.h> <sys/stat.h> struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结 ...

  5. Golang面向对象编程-struct(结构体)

    Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...

  6. go_结构体和方法

    面向对象:go语言仅支持封装不支持继承和多态 所以go语言没有class,只有struct(结构体) 无论地址还是结构本身,一律用 . 来访问成员 go语言编译器可以自动区分是值传递还是指针传递,值传 ...

  7. 六、golang中的结构体和方法、接口

    结构体: 1.用来自定义复杂数据结构 2.struct里面可以包含多个字段(属性) 3.struct类型可以定义方法,注意和函数的区分 4.strucr类型是值类型 5.struct类型可以嵌套 6. ...

  8. _stat函数/struct stat 结构体使用笔记

    内容来自互联网,非原创,方便以后查看. 另,关于获取文件信息——_stat函数的使用详见 http://blog.csdn.net/frank_liuxing/article/details/1860 ...

  9. struct socket结构体详解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://weiguozhihui.blog.51cto.com/3060615/15852 ...

随机推荐

  1. Android SDK 安装与配置

    1.下载sdk包 链接:https://pan.baidu.com/s/1Og8F02YBJn59LPWsJwkjUA 提取码:byu1 复制这段内容后打开百度网盘手机App,操作更方便哦 2.解压 ...

  2. CKA考试个人心得分享

    考试相关准备: 真题:需要的私密: 网络:必须开启VPN,以便能访问国外网络,强烈建议在香港搭建相应FQ: 证件:考试需要出示含有拉丁文(英文)带照片的有效证件,相关有效证件参考(优先建议护照):ht ...

  3. Android学习笔记添加ActionItem

    ActionItem概念 案例仿知乎首页的ActionBar 一.编写布局文件activity_main.xml <?xml version="1.0" encoding=& ...

  4. deepin双屏实现方式

    先xrandr --listproviders看下有几个provider,如果有多个,那么可能是不同显示口在不同显卡上,运行xrandr --setprovideroutputsource 0 1或x ...

  5. 5.kubernetes的服务暴露插件-Traefik

    目录 1.部署traefik 2.准备资源配置清单 3.应用资源配置清单 4.检查创建资源 5.解析域名 6.配置反向代理 7.浏览器访问 部署traefik 在HDSS7-200.host.com上 ...

  6. elk4

    传统问题: 微服务系统下服务器数量过大,如果还在使用依次登录每台机器的传统方法查询日志,这样效率非常低下.ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写 ...

  7. Java 比较对象中的内容是否一致

    获取对象中的所有属性 private static Field[] getAllFields(Object object) { Class clazz = object.getClass(); Lis ...

  8. soapUI使用小结(一)

    本篇博客是照搬虫师的<Web接口开发与自动化测试>一书的soapUI测试工具一节 以及博文http://blog.csdn.net/a19881029/article/details/26 ...

  9. 实战:IDEA运行速度调优

    序言 可能大家觉得系统调优一般都是针对服务端应用而言的,普通Java开发人员很少有机会实践.今天就通用一个Java开发人员日常工作中经常使用的开发工具开做一次调优实战. 我在日常工作中的主要IDE工具 ...

  10. express高效入门教程(5)

    5.ejs模版 5.1.什么是模版引擎? 为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在后端开发中,处理数据的代码和展示 ...