今天上机写个链表的题被pta背刺,结果pta里面搞了一堆别名,本来C就忘得差不多了,今天就总结一下typedef的用法,然后顺便开个链表的复习(因为本人是主java,但健忘,做一下笔记),也让小伙伴们一劳永逸。
为基本数据类型定义新的类型名
系统默认的所有基本类型都可以利用 typedef 关键字来重新定义类型名
例如给int重新定义类型名
#include <stdio.h>
typedef int Integer;
int main(){
Integer a=0;
printf("%d",a);
}
例如double重新定义类型名
#include <stdio.h>
typedef double Integer;
int main(){
Integer a=0.00000000000;
printf("%.3f",a);
}
为结构体定义简洁的类型名称(重点)
这里就是博主今天被被刺的地方
抛出问题
例子如下。
其实大家应该都知道当我们用struct创建结构体后,每次创建对象都必须带struct,这样非常的不方便,所以这里我们就可以引入我们的正题,用typedef给这个结构体取别名。
#include <stdio.h>
struct node{
int data;
node* next;
};
int main(){
struct node node1={1,NULL};
struct node node2={2,NULL};
}
解决问题
#include <stdio.h>
struct node{
int data;
node* next;
};
typedef struct node list;
int main(){
list node1={1,NULL};
printf("%d",node1.data);
}
这里我们用list作为struct node的别名,这样就可以省力。
剖析案例
typedef struct Node* PtrToNode;
struct Node {
ElementType Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
这里其实就是ptrTonode是Node* 的别名,而list是ptrTonode的别名(本人觉得这里用一个list去做Node*的别名就够了,反正不知道为什么这么脑瘫。)