一个栗子
#include<stdio.h>
int main()
{
int a = 112;
printf("a == %d \t&a == %d\n",a,&a);
int *b = &a;
printf("b == %d\t*b == %d\t&b == %d\n",b,*b,&b);
int **c = &b;
printf("c == %d\t*c == %d\t&c == %d\t**c == %d",c,*c,&c,**c);
return 0;
}
执行结果:
a == 112 &a == 6356748
b == 6356748 *b == 112 &b == 6356744
c == 6356744 *c == 6356748 &c == 6356740 **c == 112
Process returned 0 (0x0) execution time : 0.031 s
Press any key to continue.
就好比三个宝箱,分别为a,b,c。每个宝箱都放在一个单独的位置,c里面放着b的地址,b里面放着a的地址,a里面放着大宝剑,你需要得到大宝剑才能去救公主,现在你可以有如下的操作:
①如果你想知道宝箱在哪个地方,只需要在名称前加一个&符号即可,例如:&a = 6356748;
②如果你运气很好,开始你就站在a的面前,那么直接打开即可获得大宝剑;(直接打开 即:直接访问)
③如果你站在了b的面前,直接打开的话你只能获得a的地址,现在的你很苦恼,因为千辛万苦只找到了a的地址,再去找a的话怕是拿到大宝剑的时候公主的孩子都会打酱油了,怎么办??这个时候注意!!刚刚是说直接打开b会得到a的地址,那么我们间接打开不就行了简直是魔法……(间接打开 即:间接访问)
*b == 112
Pia!(o ‵-′)ノ”(ノ﹏<。)
不好意思,刚刚断电了,重新读档,你惊奇的发现,你现在连辛辛苦苦找的b都没有了,只剩个c了,如果你直接打开c,得到的是b的地址,如果间接打开会得到a的地址,咋办呢??那就豁出去了,连用两次魔法试试……
恭喜你~~~成功拿到大宝剑
**c == 112
PS:文笔一般,唠叨这些主要是想帮助C语言小白们大概理解一下指针相关的事情可能不太严谨,如有错误还请大佬指正
后记:
拿到大宝剑的你突然发现,这把大宝剑是那么#¥@(*¥一堆赞美的词 ,于是这位曾经梦想仗剑走天涯,勇救公主的勇士成功转型为------------->打铁匠