电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

第二十章C、C++语言指针二为指针分配和释放空间

第二十章C、C++语言指针二为指针分配和释放空间_第1页
1/30
第二十章C、C++语言指针二为指针分配和释放空间_第2页
2/30
第二十章C、C++语言指针二为指针分配和释放空间_第3页
3/30
第二十章 指针 二 为指针分配和释放空间 20.1 理解指针的两种“改变” 普通变量(非指针,简单类型变量)只能改变值: 1) int a = 100; 2) ... 3) a = 200; 第 1 行代码,声明 int 类型变量 a,并且初始化 a 的值为100。 到第 3 行代码,变量 a 的值被改变成 200。 对于非指针的简单变量,能被程序改变的,只有这一种。而指针变量,似乎有两种改变。 20.1.1 改变指针的值 这一点和普通变量一致。但要特别注意,“改变指针的值”引起的结果是什么?其实就是“改变指针的指向”。 因为,指针的值是某个变量的地址。假如指针P 原来的值是 A 变量的地址,现在改为B 变量的地址。我们称为:“P 由指向 A改为指向 B”。这就是指针的第一种改变。 以下是示例代码: int* P; int A,B; 1) P = &A; 2) ... 3) P = &B; 1) 行代码中,P 的值为 &A,即P 指向变量A。 到3)行代码中,P 的值变为&B,即改为指向变量B。 下面讲:指针的第二种改变。通过指针,改变指针所指的变量的值。 20.1.2 改变指针所指的变量的值 复习前一章,我们知道通过 * (地址解析符),可以得到、或改变指针所指的变量的值。 int* P; int A = 100; P = &A; *P = 200; cout << A << endl; 代码中加粗的那一行:*P = 200; ,其作用完全等同于:A = 200; 所以,最后一行输出的结果是 200。 这就是指针的第二种改变:所指变量的值,被改变了。 20.1.3 两种改变?一种改变? 两种改变的意义不同: 改变一:改变指针本身的值(改变指向)。 改变二:改变指针指向的变量的值。 从代码上看: 第一种改变,P = &A; 左值(等号左边的值)是变量本身,右值则是一个地址。 而第二种改变,*P = 200; 左值通过星号对P 操作,来取得P 指向的变量;右值是普通的值。 理解,区分对指针的两种改变,才能学会如何使用指针。 请思考:上一章讲的“指针的加减操作”,是对指针的哪一种改变? 最后需要说明,严格意义上,指针仍然只有一种改变,即改变指针本身的值。改变指针指向的变量,应视为对另一变量的改变,只不过在代码上,它通过指针来进行,而不是直接对另一变量进行操作。 为指针分配、释放内存空间 之前,我们给指针下的定义是“指针是一个变量,它存放的值是另一个变量的地址”。 比如: int a; int* p = &a; 看,a 就是“另一个变量”,p 指向了 a。 我们知...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第二十章C、C++语言指针二为指针分配和释放空间

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部