指针就是变量的内存地址,用一个变量来专门存放另一个变量的地址(指针)时就称这个变量为指针变量,指针变量的定义方式为:基类型 *指针变量名,如int *p (定义了一个整型的指针变量p).在刚开始学指针时,很多人都搞不懂*p,p和&p这三个的区别,以下我通过一个小程序来总结一下.
#include <stdio.h>
int main(void)
{
int a=20;
int *q; //定义一个整型的指针变量q
q=&a; //将变量a的地址放在指针变量q中
printf("变量a的地址为: %p\n",&a); //输出a的地址
printf("变量a的值为: %d\n",a); //输出a的值
printf("指针变量q的地址为: %p\n",&q); //输出q的地址
printf("指针变量q的值为: %p\n",q); //输出q的地址的值
printf("指针变量q所指向的值为: %d\n",*q); //输出a的地址
}
运行之后的结果为:
变量a的地址为: 0240FF5C
变量a的值为: 20
指针变量q的地址为: 0240FF58
指针变量q的值为: 0240FF5C
指针变量q所指向的值为: 20
从结果可以看出,指针变量与其他变量一样,也有自己的地址.其中,使用%p作为占位符来显示一个地址.
通过上面的程序演示,我们就可以清楚*p,p和&p三者所指的目标了,希望对需要的朋友有点小帮助!