二级指针
B是一个指针变量,其中存放着C的地址,但是B也要占空间的啊,所以B也有地址,B的起始地址是0x00000004,但是B内存中存放的是C的地址,所以B代表0x00000008即B指向的内容的地址。
1
2
3B= 0x00000008; //B指向的内容的地址
*B = "一段内容"; //B解引用,也就是B指针指向的C的值
&B = 0x00000004; //B取地址,B的地址是0x00000004A是二级指针变量,其中存放着B的地址0x00000004,A也有地址,是0x00000000;
- 若函数需要改变原本的指针指向,函数形参可以使用二重指针,不过使用c++中的引用(对一级指针)效率更高
1
2
3
4*A = B= 0x00000008; //A解引用也就是B的内容
**A = *B = "一段内容"; //B解引用,也就是B指针指向的C的值
A = &B = 0x00000004; //A存的是B本身的地址,B的地址是0x00000004
&A = 0x00000000; //A取地址
- 若函数需要改变原本的指针指向,函数形参可以使用二重指针,不过使用c++中的引用(对一级指针)效率更高
定义
1
2
3int a=1;
int *p=&a; // p为a变量的地址,通过*p可以得到a的值
int **q=&p; // q为p指针的地址,通过**q可以得到a的值二级指针是指向指针的指针,所以函数形参是二级指针时,实参应该是一级指针,而非二级指针
1
2
3
4
5
6
7
8
9node *tree;
insert(&tree);
node *insert(node **root)(){
}
//引用写法,就不要二级指针
node *insert(node* &root){
}