typedef struct 指针结构体使用方法
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 |
二、使用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后面的结构体名也是可以的,但是由于没有名字,操作(如定义结构体变量)只能在定义的同时进行。typedef struct File
{
......
} FileInfo;
取FileInfo为struct file 的别名
typedef struct File
{
.....
}FileInfo, *FileP;
经过我的求证:
给struct file 取个别名为FileInfo
给struct file * 取个别名为FIleP;
如:FileP L;//头指针;
typedef struct 指针结构体使用方法的更多相关文章
- typedef struct与struct定义结构体
今天在定义结构体的时候发现typedef struct与struct定义结构体有一些不同之处: 结构也是一种数据类型, 能够使用结构变量, 因此, 象其他 类型的变量一样, 在使用结构变量时要先对其 ...
- 【AT91SAM3S】SAM3S-EK Demo工程中,LCD驱动程序的加载(函数指针结构体)
为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪. 花了好久,追踪到了这个执行过程. 进入main ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- struct stat结构体简介
在使用这个结构体和方法时,需要引入: <sys/types.h> <sys/stat.h> struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结 ...
- Golang面向对象编程-struct(结构体)
Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...
- go_结构体和方法
面向对象:go语言仅支持封装不支持继承和多态 所以go语言没有class,只有struct(结构体) 无论地址还是结构本身,一律用 . 来访问成员 go语言编译器可以自动区分是值传递还是指针传递,值传 ...
- 六、golang中的结构体和方法、接口
结构体: 1.用来自定义复杂数据结构 2.struct里面可以包含多个字段(属性) 3.struct类型可以定义方法,注意和函数的区分 4.strucr类型是值类型 5.struct类型可以嵌套 6. ...
- _stat函数/struct stat 结构体使用笔记
内容来自互联网,非原创,方便以后查看. 另,关于获取文件信息——_stat函数的使用详见 http://blog.csdn.net/frank_liuxing/article/details/1860 ...
- struct socket结构体详解
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://weiguozhihui.blog.51cto.com/3060615/15852 ...
随机推荐
- CSS文本相关之水平排列[4]
在正常流中,文本都是从左往右.自上而下排列显示,如果想要改变排列方向的话,可以通过CSS属性来改变. text-align属性 文本排列(text-align)可改变文本在水平上的方向,但不改变内部的 ...
- excel筛选重复项代码
Sub test()'updateby Extendoffice 20151030 Dim xRng As Range Dim xTxt As String On Error Res ...
- SpringBoot从入门到放弃之配置Spring-Data-JPA自动建表
pom文件配置引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- Java并发编程-Java内存模型
JVM内存结构与Java内存模型经常会混淆在一起,本文将对Java内存模型进行详细说明,并解释Java内存模型在线程通信方面起到的作用. 我们常说的JVM内存模式指的是JVM的内存分区:而Java内存 ...
- 35 _ 队列1 _ 什么是队列.swf
队列是一种可以实现一个先进先出的存储结构 什么是队列? 队列(Queue)也是一种运算受限的线性表.它只允许在表的一端进行插入,而在另一端进行删除.允许删除的一端称为队头(front),允许插入的一端 ...
- 微信小程序-超出部分显示省略号(单行与多行)
/*单行*/ .work_font{ display:block /*这里设置inline-block或者block:根据使用情况来定(行内元素需要加这个,块级元素和行内块级可以不用)*/ white ...
- Python对文本读写的操作方法【源码】
Dear ALL 今天给大家分享的是 TXT文本读写方式,也是文件操作最常用的一种方式,主要内容有: 文件写方法 文件读方法 with open() as f 方法 话不多说,码上见: ''' 标题: ...
- 【kubeadm初始化报错】failed to run Kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
复现场景 环境 系统:Centos7 kubernetes:1.18.5 docker:19.03.9 复现步骤 1.通过 yum 或 rpm 安装 kubelet kubectl kubeadm,并 ...
- typeof、instanceof与constructor
typeof返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,包括number,boolean,string,object,undefined,function. 语法: typeof( ...
- DOM对象增删元素
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...