使用指针变量的例子
【例】
通过指针变量访问整型变量
【思路】
先定义2个整型变量,在定义2个指针变量分别指向这两个整型变量,通过访问指针变量,可以找到它们所指向的变量的地址,从而得到这些变量的值。
【代码】
int main()
{
int a, b; //定义整型变量a,b
printf("从键盘输入a和b的值:\n");
scanf("%d%d", &a, &b); //给a,b赋值
int* p1, * p2; //定义指向整型数据的指针变量,此处的*只是表示该变量是指针变量
p1 = &a; //把变量a的地址赋给指针变量p1,即p1指向a,p1表示a的地址
p2 = &b; //把变量b的地址赋给指针变量p2,即p2指向b,p2表示b的地址
printf("输出a和b的值:\n");
printf("a=%d,b=%d\n", a, b); //输出变量a,b的值
printf("\n");
printf("输出*p1和*p2的值:\n");
printf("*p1=%d,*p2=%d\n", *p1, *p2);
// 这里的* 表示指向,*p1表示指针变量p1所指向的变量a,也就是说*p1就是变量a
return 0;
}
【运行结果】
【程序分析】
(1)程序开头处定义了两个指针变量p1和p2。但是一开始它们并没有指向任何一个变量,至于指向哪一个整型变量,要在程序语句中指定。程序中的p1 = &a;
和p2 = &b
这两个语句的作用就是是p1指向a,p2指向b,此时p1的值为&a(即a的地址),p2的值为&b(b的地址)。如下图所示:
(2)printf("a=%d,b=%d\n", a, b);
输出a,b的值3和9。printf("*p1=%d,*p2=%d\n", *p1, *p2);
输出*p1
和*p2
的值也是3和9。其中“”表示“指向”。*p1
表示“指针变量p1所指向的变量”,也就是变量a,*p2
表示“指针变量p2所指向的变量”,也就是变量b。
(3)程序中出现两处*p1
和*p2
,二者含义不同。程序第4行的*p1
和*p2
表示定义两个指针变量p1和p2,这里的p1和p2前面的“”只是表示该变量是指针变量。程序最后一行printf函数中的*p1
和*p2
则表示指针变量p1和p2所指向的变量。
注意
定义指针变量时,左侧应有类型名,否则就不是定义指针变量。
例如:
*p1;
//企图定义p1为指针变量。出错
int*p1;
//正确。必须指定指针变量的基类型