【发布时间】:2019-03-15 09:43:47
【问题描述】:
我正在尝试在 TurboC++ 中执行这个 C++ 程序代码
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main()
{clrscr();
int i;
long int a=10,*p;
p=&a;
for(i=0;i<10;i++)
{printf("\n{Via printf}\t&a=%p,p=%p",&a,p);
cout<<"\n{Via cout}\t&a="<<&a<<",p="<<p;
p=p+1;
}
getch();
}
现在,这个程序的输出如下:
{Via printf} &a=FFF2,p=FFF2
{Via cout} &a=0x8f87fff2,p=0x8f87fff2
{Via printf} &a=FFF2,p=FFF6
{Via cout} &a=0x8f87fff2,p=0x8f87fff6
{Via printf} &a=FFF2,p=FFFA
{Via cout} &a=0x8f87fff2,p=0x8f87fffa
{Via printf} &a=FFF2,p=FFFE
{Via cout} &a=0x8f87fff2,p=0x8f87fffe
{Via printf} &a=FFF2,p=0002
{Via cout} &a=0x8f87fff2,p=0x8f870002
{Via printf} &a=FFF2,p=0006
{Via cout} &a=0x8f87fff2,p=0x8f870006
{Via printf} &a=FFF2,p=000A
{Via cout} &a=0x8f87fff2,p=0x8f87000a
{Via printf} &a=FFF2,p=000E
{Via cout} &a=0x8f87fff2,p=0x8f87000e
{Via printf} &a=FFF2,p=0012
{Via cout} &a=0x8f87fff2,p=0x8f870012
{Via printf} &a=FFF2,p=0016
{Via cout} &a=0x8f87fff2,p=0x8f870016
我知道 0x(即通过 cout 输出的 p)表示十六进制编号。 ,
它的最后四位数字也表示它的存储值,
但是 8f87(它的第三、第四、第五和第六位数字)是什么意思?
【问题讨论】:
-
数字是所有的数字。 BTW
p=p+1;增加指针,而不是它指向的内容。 -
可能是地址的段部分?
-
强制提醒 Turbo C++ 已经过时了。如果可以的话,从本世纪获得一个编译器。
-
建议:不要使用 TurboC(它比你还老)。我们处于 21 世纪,还有更好的选择。
-
... 而 TurboC 使用了几十年来没有人使用过的分段内存模型。相信我,你不想知道细节。