结构体和指针详解

结构体和指针详解

结构型和指针型:

结构型

​ 结构型可以理解为用户用基本类型为原料制作的数据类型,比如数组是由多个相同数据类型的变量组合起来的。但是如果要用到不同的数据类型该怎么办呢?这时候就用到结构体了。结构体可以制作新的数据类型,即可以用系统已经有的不同的基本数据类型或用户定义的结构型来组合成用户需要的复杂数据类型。

指针型

​ 指针型变量里装的是变量的地址,通过指针可以找出这个变量在内存中的位置。指针型变量的定义是在变量名之前加了一个 **a是取变量a的内容,&a是取变量a的地址。语句a = &b是将变量b的地址存于变量a中,即我们常说的指针a指向b

  • 结点的构造

​ 指针型用的最多的就是和结构型结合起来构造节点(如链表的结点、二叉树的结点等)。

1) 链表结点的定义

​ 链表的结点有两个域:一个是数据域,用来存放数据;另一个是指针域,用来存放下一个结点的位置。

​ 链表结点的结构型定义如下:

1
2
3
4
5
typedef struct Node
{
int data;
struct Node *next; //指向Node型变量的指针
}Node;

结构体名字为Node,结构体成员有一个是用自己来定义的和自己类型相同的变量的指针(struct Node *next)。

2) 二叉树结点的定义

​ 在链表结点结构型的基础上,再加上一个指向自己同一类型变量的指针域,即二叉树结点结构型。

1
2
3
4
5
6
typedef struct BTNode 
{
int data;
struct BTNode *lchild; //指向左孩子结点指针
struct BTNode *rchild; //指向右孩子结点指针
}BTNode;

利用空间申请函数申请一个结点空间:
BT = (BTNode*)malloc(sizeof(BTNode));

一般来说,用结构体变量直接取分量,其操作用“.”;用指针结构体变量的指针来去分量,其操作用“->”,->是结构体指针运算符。

  • 关于 typedef 和 #define
  1. typedef

typedef可以理解为给现有的数据类型起一个新名字。如typedef struct{...} TypeA即给struct{...}起了一个新名字TypeA

  1. define

#define定义常量,以达到更人性化、更容易理解的目的。如:

1
2
3
4
#define ERROR 1
#define OK 0
#define bool STATUS
#define int ELEMTYPE

结构体和指针详解

作者

lvjie

发布于

2022-01-18

许可协议


:D 一言句子获取中...