开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
1、通过案例认识一级指针
C语言指针的定义很简单,只需要在变量名和数据类型中间加一个 * 就可以了!指针里面存放的是地址!!
int main()
{
int a = 10;
int* pa = &a;//定义一个int类型的指针,pa里面存放的是a的地址!
*pa = 20;//*pa,在pa前面加*就是解引用的意思,*pa=a=20
printf("%d\n", *pa);
printf("%d\n", a);
printf("%d\n",pa);
return 0;
}
明显看出,打印a和打印*pa的结果都是20而不是10!! 再梳理一下!有一个地址,这个地址是有名字的可以用十六进制数表示,这个地址里面放了一个变量a=10(初始等于10)然后,我们定义了一个可以指向整形的指针pa,pa其实也有自己的地址,这个地址里面存的就是a的地址的名字,注意是存的变量a的地址的名字!这么一来就以位置,我们要知道Pa里面存的内容也就是a的地址,我们就可以知道这个地址里面的内容也就是a的数值!从知道地址到知道地址里面的内容,这个过程叫做对指针的解引用!!即:pa=a。&是取地址符号! int pa =&a;就是取出a的地址(可以用十六进制数表示)放到pa的地址里面去!!
2、通过案例认识二级指针
int main()
{
int a = 10;
int * pa = &a;//pa是一级指针变量
int* * ppa = &pa;//ppa就是一个二级指针变量
**ppa = 50;
printf("%d\n", **ppa);
printf("%d\n", a);
//int** * pppa = &ppa;//pppa是一个三级指针变量
return 0;
}
同一级指针一样,二级指针里面存放的也是地址!!只不过它存放的是指针的地址!上例中:int pa=&a;
这个pa是用来存放一个整型变量的地址的!而int *pa=&pa;是用来存放一个准备存放整型变量的地址的指针的地址的(zhong wen bo da jing shen)