当前课程知识点:程序设计基础 > 第二章 变量与代数思维 > 2.6 关于变量的讨论 > 2.6.6 指针的 加/减 操作
好下面我们讨论第六点
对变量的这个地址
其实也就是内存单元的那个地址对它进行一个加减操作
大家看这个代码
在这个代码里头我们定义了一些变量
然后也获得了这个变量的地址值
把它cout出来
这个跟以前一样
那么下面再看这篇代码
那么里头定义了两个指针变量
Int *pn,char *pc
他们各自指向整数变量的地址和字符类型的地址
下面是新东西出来了
去把PN的值输出来
然后把PN加上1再输出出来
我们看看指向整数类型的指针
它的内容加1
和指向指向字符类型的指针
它的内容加1或者减1
最后算出来的结果会怎样
这是另外的一段代码
把加减之后的单元
对它进行读写的操作
我们来看看整个程序会得到一个什么样的输出
大家仔细看看这个代码的内容
下面我们来看这个代码在运行的时候会出什么结果
我们看到不同的变量
它在的位置是不一样的
比如N1这个变量 它的值是12
它在什么地方呢?
在22ff44这个地方
C2这个变量 它的值是什么呢
是B这个字符
它在什么位置呢
不知道什么位置 B9W
这个原因我们前面解释了
当我们输出*C2 字符指针值的时候
它不会输出地址值
这个变量本身的值不会输出
而是用它的变量指针所指的单元的内容输出出来
这是C++语言规定的
所以我们看不到它的地址值
但是前面的N1 N2我们看到了
下面神奇的事情发生了
在这个PN+1 PN-1的时候
我发现加减之后的结果
跟PN原来的值22ff44 加1 变成了22ff48
所以我们看上去
代码里头是PN加了1
它的地址值加的是4
再减1
我们看到它的地址值减的也是4
这个4是不是大家很似曾相识啊
它就是int类型所占的内存的大小
也就是字节数
所以一个指向整数单元的整数指针
对它进行加减操作
加的减的字节数是一个int它占的大小的数量
所以+1就加4个字节
因此地址值就从44变成了48
减的话从44变成40
按照同样的道理
我们看到对PC进行加减的时候
这个C它因为是字符指针
所以我们仍然看不到它这个变量的值到底变了多大
底下可以看出来 它的地址的值的变化
是按照1为单位来改变的
那么现在我们来总结一下
对于一个指向T类型的指针P来讲
比方T*P= & var
这是一个一般的形式化的表达
有个变量VR把它地址存到P这个变量里去
类型是T
就是指向T类型的指针P
那么P加1 含义是把P的值 那个值就是var变量的地址
把这个值去加上T的大小
这个算类型的大小
我们有一个运算符
这个运算符很奇怪
单词是sizeof()
这是一个短语拼在一起的一个单词
它把T类型的大小算出来
所以P+1加的并不是1 而是1个单位
所以这个1个单位是多大呢
Sizeof(T) 从加到P上面去
P-1 把一个单位Sizeof(T) 从P里面减掉
这就是为什么刚才我们在代码里面看到的
PN+1的时候 值变成了加4
PN-1的时候
它减了4
下面的代码我们可以自己回去对比一下
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测