本文章将了解指针、指针变量的定义,并搞懂p,*p,&p的区别和用法
一.指针的基本理解
1.指针:指针就是地址 可以想象是一个房子的门牌号,用来定位。
2.指针变量:指针变量是存放地址的空间 即一个有门牌号的房子 。我们在定义一个指针p时,p就是指针变量,用来存放变量p的地址(即指针)
而两者的区别就是:指针是一个概念,指针变量是一个我们实际定义的变量,该变量的地址则称为“指针”
二.p、*p、&p的含义
首先我们要了解“*”和“&”的含义。
“*”有三层意思:
1.乘号
2.申明一个指针,如定义一个指针变量p (int *p;)
3.解引用:通过指针,找到对应变量中的值(数据)即房子里的东西,如int a=1;p=&a;*p++;等价于a++;p指向地址中的内容用*p表示,即*p为a的值。
"&"是取地址运算符,即&p就是取指针p的地址 (在C++中还有引用的用法)
了解了*和&的含义,p,*p,&p的区别就清楚了
#include <stdio.h>
int main()
{
int a = 1;
int *p = &a; //等同于int *p; p = &a;
printf(" &a: %d \n", &a);
printf(" a: %d \n", a);
printf(" p:%d \n", p);
printf(" *p:%d \n", *p);
printf(" &p:%d \n", &p);
return 0;
}
编译结果为:
可见:
p就是取变量a的地址;
*p就是变量a的值;
&p就是取变量p的地址(因为p=&a,所以p和a的地址相同)
注:*和&互为逆运算,可抵消,即p,*&p ,&*p三者相同