指针是C语言区别于其他语言最精华的部分,通过指针,可以简化一些 C语言编程任务的执行,还有一些没有指针无法执行,如动态分配内存。
地址概念的引入
在生活当中,我们常常和“地址”打交道,如,我们第一次去xx超市,我们有两种方法,一是通过“xx超市”这个名字一路问路问过去,二是通过手机地图导航过去,在导航时,有一个明显的、也是最重要的东西,即地址,假设“xx超市”在“xxxxxx北京路108号”。同样的,在C语言中,访问某一变量也有两种方式,一是通过变量名访问,二是通过地址访问。在C语言中,每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。
1.通过变量名访问变量
#include <stdio.h>
int main()
{
int x = 156;
printf("x的值为 : %d\n",x);//通过变量名x访问变量156
printf("x的地址为 : %p\n",&x);
return 0;
}
0060FEFC就是156这一变量在此计算机上被分配的内存地址
2.通过地址访问变量
#include <stdio.h>
int main()
{
int x = 156;
printf("x的值为 : %d\n",x);//通过变量名x访问变量156
printf("x的地址为 : %p\n",&x);
printf("x的值为 : %d\n",*(&x));//通过x的地址来访问
system("pause");
return 0;
}
可以看出两种方式访问变量,得到的是一样的
指针的本质
综上,我们可以知道指针在本质上就是“地址”