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
   48   49   50   51   52   53   54   55   56   57   58