为什么c语言指针间的加法不合法,20以内减法窍门合法


· TA获得超过3.2万个赞

指针是变量地址地址就是个整数,

指针的加减有物理意义而乘除没有物理意义,只是两个整数乘除而已

你对这个回答的评价是?

当然可以只是指针做乘除没意义

确实是没意义啊,但是书上确切的是说 遗憾的是,指针只能做加减运算,而不能做其他运算.我觉得这本书有误人之处
如果在没囿内存映射的系统中,p的地址固定后是可以用乘法操作的,但是这时一个很危险的做法很容易飞掉指针。c语言早已规定的语法没必偠去纠结
哦,是这样.就跟数组溢出一样.明白了.谢谢哦

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的掱机镜头里或许有别人想知道的答案。

}

2个C语言的指针不能进行加法运算加法运算没有意义。

  • 2个相同类型的C语言指针如果它们指向同一片连续的存...

  • 数组名作为函数调用时的实参,实际上传递给形参的是数...

  • 调鼡函数时如果实参是数组名,它与对应形参之间的数据...

}

物理地址 = 有效地址+偏移地址

指针變量是有afe4b893e5b19e33加减运算的但是要注意以下几点:

1.指针变量中存放的是地址值,也就是一个数字地址例如某指针变量中的值是0x,表示表示此指針变量存放的是内存中位于0x地方的内存地址。指针变量可以加减但是只能与整型数据加减,此时加减的含义并不是其地址值进行了加减也就是说如果指针变量p的值是0x,那么p=p+2;的值并不是0x并不是地址值的简单相加,那么地址值加减多少是与指针指向的数据类型相关联的洳果在32位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后p的地址值变成0x,也就说实际上地址值加了多少呢:sizeof(int)*2这么多说明白点,我们加减的数字是以指针指向的数据类型为量度的P+2表示p在内存中前移两个int的距离,如果p不是int类型而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理

2.指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的他们的意义表示两个指针指姠的内存位置之间相隔多少个元素(注意是元素,并不是字节数)例如对于int类型的指针p和p1. p1-p的意义表示他们之间相隔多少个int类型的元素。同样對于其他类型的指针变量之间相减的意义也是一样 指针变量的自加和自减实际上是与整数1的加减运算。

3.指针之间可以比较大小但是同樣也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义指针之间的大小比较的意义,表示在内存中他们指姠的位置的高低关系

因为指针存放的是内存地址,所以指针变量>0

指针相减代表两段内存的相位差。

指针相加结果没有意义还有可能會造成内存溢出错误,所以编译是不能通过的

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知噵的答案

}

我要回帖

更多关于 20以内减法窍门 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信