首先要清楚一个最重要的定义:指针==地址,获取地址的途径:&变量==地址
int *p = &a; //整型地址(指针)变量保存整型地址值
*p = 100; //间接访问符(通过p访问a) 【解引用】
p = &b; //定义时有*,不定义时可不用
*p = 200; //200赋值给b
- * 变量名,则直接访问(解引用)到指针指向的变量。
- 指针类型一样才能赋值
int a; //&a-->int *p
double b; //&b-->double *p2
float c; //float-->float *p3
在二级指针中,命名规则:**pp==**p1(**p2) [ 只是便于区分,pp,p1,p2没有任何区别 ]
int main()
{
int a = 10;
int b = 20;
int *p = &a; //在定义时*说明p是个指针(地址)变量
*p = 100; //a = 100
p = &b;
*p = 200; //b=200
int **pp = &p; //int a,&a->int*,int *p,&p->int **
*pp = &a; //p=&a
**pp = 1000; //*p = 1000;a=1000
*pp = &b; //p = &b
**pp = 2000; //*p = 2000;b =2000
//int *q
//pp = &q
//pp = &a
//error
return 0;
}
用指针修改值时,要注意: 修改谁的值,传谁的地址
子函数的改变想要改变父函数的值:
- 传指针
- 解引用
野指针(悬挂指针),解引用时崩溃
空指针(NULL)表示无效指针
int *temp; //野指针