一级指针与二级指针的区别:
在传递一级指针时,只有对指针所指向的内存变量做操作才是有效的;
在传递二级指针时,只有对指针的指向做改变才是有效的;
实例1:
int a=1;
int *p=&a; // p为a变量的地址,通过*p可以得到a的值
int **q=&p; // q为p指针的地址,通过**q可以得到a的值
实例2:
在链表或者树的操作中,也需要用到二级指针,比如创建链表的头指针:
在初始化链表函数中,传入头指针,并在函数中为该指针分配空间,此时就应该使用二级指针,如void initLinklist(Node **head);
而在添加删除结点的过程中,我们并没有改变函数参数指针的指向,而是通过传入的指针如Node *head,找到要删除结点的位置,并未对该指针做改变,因此退出函数后,该指针无影响。