惜今怀远 发表于 2014-2-11 00:03:03

C++地址的问题

本帖最后由 惜今怀远 于 2014-2-11 00:18 编辑

1.不知道该如何设置奖励鱼币,这个顺便教一下
2.为什么p++之后就指向了y,x和y地址连续我知道,不明白y地址为什么在x后面??
#include<iostream>
using namespace std;
int main()
{
      int y = 30 ,x =15;
      int *p= &x;
      cout <<"&x="<<&x<<"; "<<"p = "<<p<<"; "<<"*p="<<*p<<endl;
      p++;
      cout <<"&y="<<&y<<"; "<<"p = "<<p<<"; "<<"*p="<<*p<<endl;
      p--;
      cout <<"p = "<<p<<"; "<<"*p="<<*p<<endl;
      return 0;

这是把代码中 int y = 30 ,x =15;换成int x = 15,y = 30;之后
为毛p++之后地址还变小了4??

惜今怀远 发表于 2014-2-11 00:18:50

不能在线等了,求大神解释,谢啦O(∩_∩)O~

网络学习 发表于 2014-2-11 00:33:35

期待大侠的指点

牡丹花下死做鬼 发表于 2014-2-11 00:54:35

变量内存分配不是随机的吗有windows决定 话说楼主纠结这个有意思么??

andalousie 发表于 2014-2-11 08:33:43

惜今怀远 发表于 2014-2-11 00:18 static/image/common/back.gif
不能在线等了,求大神解释,谢啦O(∩_∩)O~

我尝试了一下。结果跟你的结果不一样。可能真的是不同编译器分配不同吧。我的环境是Windows7 x64,在使用MinGW64 G++ 4.8.1的时候跟你结果相同。在使用Microsft Visual C++ 6.0 Enterprise英文版的时候,跟你结果不一致,结果是不管怎么改p++以后都不可能指向另一个变量。

惜今怀远 发表于 2014-2-11 08:59:43

andalousie 发表于 2014-2-11 08:33 static/image/common/back.gif
我尝试了一下。结果跟你的结果不一样。可能真的是不同编译器分配不同吧。我的环境是Windows7 x64,在使用 ...

那就有可能是自己学校老师编的那个书有点问题,不纠结这个东西了,谢谢了

惜今怀远 发表于 2014-2-11 09:02:52

牡丹花下死做鬼 发表于 2014-2-11 00:54 static/image/common/back.gif
变量内存分配不是随机的吗有windows决定 话说楼主纠结这个有意思么??

书上的对代码的解释是p++之后就指向了y的地址,感觉不太对就试了试,然后就囧了

无名侠 发表于 2014-2-11 09:06:26

牡丹花下死做鬼 发表于 2014-2-11 00:54 static/image/common/back.gif
变量内存分配不是随机的吗有windows决定 话说楼主纠结这个有意思么??

咳咳,纠正一下,不是随机的,变量的地址是在编译的时候决定,除非你用了动态分配函数。

无名侠 发表于 2014-2-11 09:08:19

记得当时我对这个也有点郁闷,不过没有管他。

牡丹花下死做鬼 发表于 2014-2-11 10:03:06

无名侠 发表于 2014-2-11 09:06 static/image/common/back.gif
咳咳,纠正一下,不是随机的,变量的地址是在编译的时候决定,除非你用了动态分配函数。

哦谢谢 啊O(∩_∩)O~

惜今怀远 发表于 2014-2-11 17:18:20

无名侠 发表于 2014-2-11 09:08 static/image/common/back.gif
记得当时我对这个也有点郁闷,不过没有管他。

谢谢O(∩_∩)O~

故乡的风 发表于 2014-2-11 20:04:02

我会说函数局部变量是保存在函数的栈空间中,而栈是FILO型的吗。兄弟,指针很强大,可以直接访问内存数据,但是可不是你这样玩的啊。你这样使用指针,搞不好就会造成溢出的问题的
页: [1]
查看完整版本: C++地址的问题