c++基础的问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:43:57
看下面的程序, 为什么 输出的结果是 1100
请详解, 谢谢 ^_^
void main()
{
char* p = (char*)1000;
int n = (int)(p);
cout<<n<<endl;
}
我打错了, 是1000
可是为什么是 1000呢

楼主还是满厉害的
能对指针直接赋值

char* p = (char*)1000; --> p是指针,指向内存地址1000,注意这是非法内存地址段
int n = (int)(p); -->把1000这个值给了n,所以n的值是1000

--------------
可能有点概念不清楚吧
指针是一个变量通常是长整型,有也短跳的指针,指针的指向是一个内存地址
也就是说 指针有自身的值,也有指向的值,其自身的值是一个内存地址,而内存该地址所包存的值才是我们一般使用的值

char* p = (char*)1000;这句是对指针这个变量进行赋值
所以变量的值是1000, 但从一般意义的操作来说就是指针指向
内存地址1000的地址,里面有什么值并不知道,当然在WINDOWS
里这个地址段是禁止操作的
int n = (int)p;是把指针的值赋给n,所以n是1000

32位机的指针都是4字节,所以sizeof(p) == 4
1000是常量,转换成char* 型,还是1000
相当于char* p=1000

那么n不是1000是什么?

不是吧,我在Visual Studio 2005和Visual C++6.0上帮你试过了,都是1000

输出1100????
Are You Sure!?