二级指针是用来存储一级指针变量地址的指针,声明时,需要在变量名前额外添加一个*
一级指针:指针p = 变量s地址; *p通过p访问s的存储区并对其修改
int *p=&s;
二级指针:二级指针pp = 一级指针变量p的地址; **pp通过pp访问p存储区并对其修改
int **pp=&p;
通过二级指针,交换两个字符指针内容
主函数:
#include<stdio.h>
int main(void){
char *s1 = "qwer"; //一级指针s1指向字符串"qwer"
char *s2 = "asdf";
swap(&s1,&s2); //交换一级指针地址
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
return 0;
}
交换函数:
void swap(char **ps1,char **ps2) //二级指针等同于一级指针的地址
//通过访问一级指针存储区的地址来修改它的值
{
char *temp = NULL; //定义一个空指针
temp = *ps1; //ps1为指向一级指针s1的二级指针,对其解引用(*)得一级指针地址
*ps1 = *ps2;
*ps2 = temp;
}