#include<stdio.h>
#include<stdlib.h>
//普通变量
char a = 'a';
char b = 'b';
//指针变量
char *pa = &a;
char *pb = &b;
//二级指针变量
char **ppb = &pb;
//通过指针改变变量本身的值
void change(char *point1){
*point1 = 'd';
}
//通过指向指针的指针改变指针本身
void changeP(char **point1){
*point1 = pa;
}
void main(){
//试图改变[变量b],就得传入[变量b]的内存地址,[指针pb]保存
//change(pb);
printf("&a:%x-&b:%x \t &pa:%x-pa:%x-pb:%x\n", &a, &b, &pa,pa, pb);
printf("*b:%c\n", *pb);
printf("-----------------------\n");
//试图改变[指针b],就得传入[指针b]的内存地址,二级指针[ppb]保存
//[指针b]原本保存[变量b]的内存地址,变为保存[变量a]的内存地址;
changeP(ppb);//或者changeP(&pb);
printf("&a:%x-&b:%x \t &pa:%x-pa:%x-pb:%x\n", &a, &b, &pa, pa, pb);
printf("*b:%c\n", *pb);
system("pause");
}
--输出结果-------------------------------总结:指针的出现是为了改变变量的值,而二级指针是为了改变指针的值-----------------