C++, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">指针变量的引用
C++, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">怎样使一个指针变量指向另一个变量呢?只需要把被指向的变量的地址赋给指针变量即可。首先,我们介绍有两个与指针变量有关的运算符:
(1)&取地址运算符。
(2)*指针运算符(或称间接访问运算符)。
例如:&a为变量a的地址,*p为指针变量p所指向的存储单元。
利用这两个运算符,我们来学习怎样引用指针来访问指针所指向的数据。
例如:
pointer_1=&i; //将变量i的地址存放到指针变量pointer_1中
pointer_2=&j; //将变量j的地址存放到指针变量pointer_2中
这样,pointer_1就指向了变量i,pointer_2就指向了变量j,如图7-2所示:
图7-2指针变量
【例7-1】通过指针变量访问整型变量。
#include<iostream.h>
int main()
{
int a,b,t; //定义整型变量a,b
int *p1,*p2; //定义指针变量*p1,*p2
a=100;b=10; //对a,b赋值
p1=&a; //把变量a的地址赋给p1
p2=&b;
cout<<a<<","<<b<<endl; //把变量a的地址赋给p2
cout<<*p1<<","<<*p2<<endl; //输出*p1和*p2的值
t=*p1;
*p1=*p2;
*p2=t;
cout<<a<<","<<b<<endl; //把变量a的地址赋给p2
cout<<*p1<<","<<*p2<<endl; //输出*p1和*p2的值
return 0;
}
运行结果为
100,10 //a和b的值
100,10 //*p1和*p2的值
10,100 //交换后a和b的值
10,100 //交换后*p1和*p2的值
在上例中,我们通过p1=&a;与p2=&b;这两行语句,建立起了p1, p2与a, b之间的关联,p1指向a,p2指向b,那么*p1的值实际就是a的值,*p2的值实际就是b的值。因此,当我们交换*p1与*p2的值之后,a与b的值也同时发生了改变。
一般的C++编译系统为每一个指针变量分配4个字节的存储单元,用来存放变量的地址。
指针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是:用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C++语言中用“*”符号表示指向,例如,i_pointer是一个指针变量,而*i_pointer表示i_pointer所指向的变量。如图7-3所示:
图7-3指针变量和它所指向的变量之间的联系
对于这样一种指向关系,下面两个语句作用相同:
i=3;
*i_pointer=3;
Comments