Page 53 - 高中 信息技术 选择性必修1 数据与数据结构
P. 53
第二章 数据的存储方式 2.3 数据的链式存储与组织
在前面的定义中,使用了&运算符,这个运算符是一个取地址运算符,因此“&a”表
示取变量a的存储地址。对于用取地址运算符&将一个变量的地址赋值给一个指针变量,我
们一般也称为将该指针变量指向某个变量,例如“pi=&a;”表示将pi指向a。
对于指针变量,如果直接给它赋值,是改变指针所指向的存储单元;如果想修改
它所指向的存储单元中的数据,则应该在变量名前加个“*”,如下所示:
int a,b;
int *pi;
pi=&a; //pi指向变量a
*pi=88; //*pi代表它所指向的存储单元的值,即变量a的值,
int a=22,b=33;广东教育出版社
//该语句实际是修改变量a的值为88
pi=&b; //pi指向变量b
*pi=126; //*pi代表它所指向的存储单元的值,即变量b的值,
//该语句实际是修改变量b的值为126
注意:如果将指针变量赋值为一个具体的数值,通常会导致程序出现错误。假如将上
面的语句“*pi=126”改为“pi=126”,则在后续访问指针变量pi时可能会引起内存访问错
误。所以我们需要分清楚是想改变指针变量所指向的存储地址,还是想修改指针变量所指
向的存储单元的值。
分 析
分析以下代码的输出结果。
#include <iostream>
using namespace std;
int main()
{
int *pi;
pi=&a;
*pi=*pi+35;
pi=&b;
*pi=0;
//输出变量a和pi所指内存单元的值
cout<<"a="<<a<<",*pi="<<*pi;
}
45 45
21X2204.indd 45 2019/9/26 13:53:08