//指针怎么用
// (区分两个概念,指针变量和指向内容,指针变量只保存一个地址值,在这个地址值对应的内存中具体存放的东西叫做指向内内容)
用变量给指针赋值
int a = 5;
int *p = &a;//用变量给指针赋值方式一(在声明指针时),需要用&(取址符)
std::cout << *p << std::endl;// *(指针) :指向的内容
int *w;
w = &a;//用变量给指针赋值方式二(在声明指针之后),需要用&(取址符)
std::cout << *w << std::endl;
指针直接给指针赋值
int *q = p;
int *e;
e = p;//指针直接给指针赋值,类型相同,直接赋值,同普通变量一般。
std::cout << *q << std::endl;
std::cout << *e << std::endl;
双指针
//双指针怎么用
//(指向指针的指针)
int *r = &a;//指针r指向整型变量a
int **pp = &r;//指针pp指向指针r
int *y = *pp;//将pp指向内容复制给整型指针y
std::cout << **pp << std::endl;
std::cout << *y << std::endl;
结构体指针
typedef struct Node {
char val;
struct Node *left;
struct Node *right;
} BiNode, *BiTree;
//该结构体声明相当于如下两步
//step 1.(声明结构体)
//struct Node {
// char val;
// struct Node *left;
// struct Node *right;
//};
//setp 2.(起别名)
//typedef struct Node BiNode;
//typedef struct Node * BiTree;
BiNode * C = (BiNode *) malloc(sizeof(struct Node));
BiNode * D = (BiNode *) malloc(sizeof(struct Node));
C->val = 'C';
(*D).val = 'D';
std::cout<<C->val<<std::endl;
std::cout<<(*D).val<<std::endl;