WindyJane 发表于 2021-1-7 21:58:23

肚子饿了233 发表于 2021-1-7 21:56
为啥不能相加呢?

。。。。这个要懂原理的话要说好多, 可以说是寄存器的原因 ,因为规定不能这样,存在溢出风险, 地址可以 但是地址可以是 基地址+偏移量+偏移量+....

WindyJane 发表于 2021-1-7 22:01:00

肚子饿了233 发表于 2021-1-7 21:56
为啥不能相加呢? 难道相加就不表示偏移量了吗?

。。这个是汇编规定 ,简单理解就是存在溢出可能, 和寄存器有关 和操作系统规定 有关, 你只需要记住地址可以表达为:地址=基地址 +偏移+偏移+。。。。。。

WindyJane 发表于 2021-1-7 22:04:49

肚子饿了233 发表于 2021-1-7 21:56
为啥不能相加呢? 难道相加就不表示偏移量了吗?

回复不了了 ,吃了我好多回复。。。 简单理解就是规定,想理解为啥就看下小甲鱼的汇编教程

肚子饿了233 发表于 2021-1-7 22:09:48

WindyJane 发表于 2021-1-7 22:04
回复不了了 ,吃了我好多回复。。。 简单理解就是规定,想理解为啥就看下小甲鱼的汇编教程

不好意思,我等级太低了,加不了您。。。

风过无痕1989 发表于 2021-1-7 22:10:03

肚子饿了233 发表于 2021-1-7 21:46
你的意思是,两个指向相同数组的指针的相加减表示的是偏移量吗?

谭浩强的《C语言程序设计》232页指出:如果指针变量 p1 和 p2 都指向同一数组,如执行 p2 - p1,结果是p2 - p1的值(两个地址之差)。这样,人们就不需要具体地知道 p1 和 p2 的值,然后去计算它们的相对位置,而是直接用 p2 - p1 就可知道它们所指元素的相对距离。两个地址不能相加,如 pl + p2是无实际意义的,也就是说两个指针相加是没有意义的,

肚子饿了233 发表于 2021-1-7 22:10:22

WindyJane 发表于 2021-1-7 22:04
回复不了了 ,吃了我好多回复。。。 简单理解就是规定,想理解为啥就看下小甲鱼的汇编教程

好哒,谢谢,寒假一定会补上!

肚子饿了233 发表于 2021-1-7 22:16:30

风过无痕1989 发表于 2021-1-7 22:10
谭浩强的《C语言程序设计》232页指出:如果指针变量 p1 和 p2 都指向同一数组,如执行 p2 - p1,结果是p2 ...

我们学校用的是苏小红的教材,书里压根没提到这。但你引用出谭浩强的两指针相加无意义,但我也不知道为啥无意义?我是不是探究的太深了,需要放一放?

风过无痕1989 发表于 2021-1-7 22:25:31

肚子饿了233 发表于 2021-1-7 22:16
我们学校用的是苏小红的教材,书里压根没提到这。但你引用出谭浩强的两指针相加无意义,但我也不知道为啥 ...

知道指针乘、除、加没有意义即可,深究我也觉得没有必要,倒不如将精力多用于他处,如数组、函数的指针等定义与使用方面

Mike_python小 发表于 2021-1-8 11:21:30

参考
页: 1 [2]
查看完整版本: C语言!与指针有关,为啥要打括号?