C++-Typedef结构体遇上指针
继Typedef遇上结构体数组后,我们又产生了新的疑问。
上一期地址:https://www.cnblogs.com/lemaden/p/10122929.html
昨天一位朋友又问我了,说结构体数组遇上typedef我懂了,就是数组拥有三个特性:1.首地址 2.数组的长度 3. 数组的步长(元素类型),typedef只是重定义了数组的长度和类型。
那么今天的typedef跟结构体指针你怎么解释呢?我们看下问题的代码:
typedef struct LNode
{ // Singly linked list Node
int data;
struct LNode *next; // Pointer to next node
}LNode,*LinkList;
在链表中定义节点时,经常会看到上面的第四行,strcut LNode *next,这里仿佛是在边定义节点类型,又在里面定义指针域,其实这样是可以的,记住:在C语言中,只有这里可以这样用,其他地方都不可以,而且只能是指针,不能是结构体变量,否则会陷入无限递归。
第三行就不用解释了,一个数据域。那么三四行我们都解决了。继续往下走。
第五行右括号 { 第一个类型LNode比较好解释。
是为struct LNode 创建一个简单的别名,以后就用LNode代替它了。
那么*LinkList呢?
我们把它单纯拿出来:
typedef struct LNode
{ // Singly linked list Node
int data;
struct LNode *next; // Pointer to next node
}*LinkList;
一句话解释清楚:把* 与前面的struct LNode放在一起,是不是就清楚了?
typedef struct LNode {....}* LinkList
我们可以拿基本类型来示范下:
typedef int* Pointer;
Pointer p; //指向整型类型的指针P
那么回到上面的例子,LinkList 是不是就是指向结构体类型的指针了。
这里的LinkList应该就是头指针了,指向整个链表,而前面的LNode应该就是节点。
C++-Typedef结构体遇上指针的更多相关文章
- file结构体中private_data指针的疑惑
转:http://www.360doc.com/content/12/0506/19/1299815_209093142.shtml hi all and barry, 最近在学习字符设备驱动,不太明 ...
- C语言 指向结构体变量的指针
一个指向变量的指针表示的是占内存中起始位置 一个指向结构体的变量的指针表示的是这个结构体变量占内存中的起始位置,同样它也可以指向结构体变量数组 定义结构体变量的指针: //假设已有一个结构体名为Stu ...
- typedef,结构体,共用体,联合体
typedef的用途: 封装数据类型,方便移植 简化函数指针的定义 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/ ...
- file结构体中private_data指针的疑惑【转】
本文转载自:http://www.cnblogs.com/pengdonglin137/p/3328984.html hi all and barry, 最近在学习字符设备驱动,不太明白private ...
- C/C++中指向结构体变量的指针,调用指向的那个结构体中的成员
设p是指向结构体变量的指针,则可以通过以下的方式,调用指向的那个结构体中的成员: (1)结构体变量.成员名.如,stu.num. (2)(*p).成员名.如,(*p).num. (3)p->成员 ...
- 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...
- 【转】C语言中不同的结构体类型的指针间的强制转换详解
C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险.只要理解了其内部机制,你会发现C是非常灵活的. 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在 ...
- C/C++ 错误笔记-在给结构体中的指针赋值时,要注意该指针是否已指向内存空间
先来看下面的例子: #include <stdlib.h> #include <string.h> #include <stdio.h> #pragma warni ...
- C语言 指向结构体数组的指针
当结构体指针变量指向一个结构体变量数组的时候,此时指针变量的值就是结构体数组的首地址 关于如何定义结构体数组,和将结构体指针指向结构体变量数组,不是重点. 重点是,明白结构体指针的是怎么移动的, 我个 ...
随机推荐
- Life is Strange:《奇异人生》
“生活就是一个陌生人”
- JS DOM属性+JS事件
DOM属性 console.log(ele.attributes) 获取ele元素的属性集合 ele.attributes.getNamesItem(attr).nodeValue 获取指定属性值 e ...
- 复原IP地址
这道题有点不好理解 export default (str) => { // 保存所有符合条件的IP地址 let r = [] // 分四步递归处理ip分段 let search = (cur, ...
- ECMAScript基本对象——String 对象
对象用于处理文本(字符串). 1.创建 var txt = new String("string"); var txt = "string"; 2.方法 cha ...
- thinkphp5.0将数据指模板中
在控制器中写: public function index(){ $username = \think\Db::table('navigation')->where(array("Vi ...
- Django中非视图函数获取用户对象
今天遇到了一个问题:在Django中怎么从非视图函数中获取用户对象?怎么保证不同的请求获取到不同的用户对象? 平常我们获取用户对象使用的是: request.user 不得不说,这确实很方便. 但是, ...
- [CF1303G] Sum of Prefix Sums - 点分治,李超线段树
给定一棵 \(n\) 个点的带点权的树,求树上的路径 \(x_1,...,x_k\) ,最大化 \(\sum_{i=1}^k ia_{x_i}\) Solution 树上路径问题可用点分治. 考虑如何 ...
- nat123+nginx实现外网访问本机IIS发布的系统
故事开端(前因) 嗯,内网其实是校园网络,服务器呢,不是阿里云.腾讯云之类的云服务器,而是自己正在码字的笔记本电脑:有公网IP吗?没有!校园IP分配的IP固定不?不固定,动态分配的,额~~~. 我想想 ...
- 小白的java学习之路 “ 带参数的方法”
一.带参数的方法: 1.1 语法: <访问修饰符> 返回类型 <方法名>(<形式参数列表>) { //方法的主体 } 1.2 案例: 榨汁机 public clas ...
- 创建基于ASP.NET core 3.1 的RazorPagesMovie项目(三)-已搭建基架的Razor页面解释和更新
本节主要介绍在上一节中通过搭建基架而创建的Razor页面,并做一些UI改变. 一.创建.删除.详细信息和编辑页面 1.双击Pages/Movies/Index.cshtml.cs文件,这是一个Razo ...