c++ 莫名了~~

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:47:01
#include<iostream>
using namespace std;
void main(void)
{

int a = 1;
cout<<&a<<" "<<(void *)a<<endl;

}

输出:

0012ff60 00000001 //????????
谁能解释下 这个 00000001 是个什么东西
那 (void *)操作涉及到地址操作吗 。。

不涉及任何地址操作,(void *)a -> 强制转换为void类型指针。
只是类型转换而已,相当于定义 void *b = a;

指针缺省输出模式是16进制的,32位操作系统16进制就是8个字符,不足8个字符,左补0

00000001 就是 0x00000001

看前面那个&a也是个指针,输出格式一样

不知道你说的地址操作是指的哪方面,(void *)a是定义了一个指向a的存储地址的指针===========================================
0012ff60是a的地址
00000001是a中所有位的值,如果只输出a就是1,加了(void *)强制输出a所在位置的所有内容,换成(int *)a或(long *)a都是一样的结果

就是1阿,void类型的1