结构体中有趣的自增现象
#include <iostream>using namespace std;
struct stud
{
long num;
char *name;
float score;
};
int main()
{
struct stud wang={1000,"wangxiaoming",99.9};
struct stud *p=&wang;
/*int a;
int *p=&a;*/
printf("%ld %s %f \n",wang.num,wang.name,wang.score);
printf("%d \n",sizeof(*p)); // 12个字节
printf("%d \n",sizeof(wang));
printf("%0x \n",*p); // 输出了wang.num的十六进制 (只输出4个字节)
printf("%0x \n",wang); // 输出了wang.num的十六进制 (只输出4个字节)
printf("%0x %0x %0x \n",*p,*p,*p);
printf("%0x %0x %0x \n",wang,wang,wang);
printf("%0x %0x %0x %0x %0x %0x \n",wang,wang,wang,wang,wang,wang);
printf("%0x %0x %0x\n",*p,(*p).num,(*p).name);
printf("%0x %0x %0x %0x\n",*p,*p,(*p).num,(*p).name);
printf("%0x %0x %0x\n",wang,wang.num,wang.name);
printf("%0x %0x %0x %0x\n",wang,wang,wang.num,wang.name);
return 0;
}
非常有趣的运行结果:
1000 wangxiaoming 99.900002
12
12
3e8
3e8
3e8 432090 42c7cccd
3e8 432090 42c7cccd
3e8 432090 42c7cccd 3e8 432090 42c7cccd
3e8 432090 42c7cccd
3e8 432090 42c7cccd 3e8
3e8 432090 42c7cccd
3e8 432090 42c7cccd 3e8
Press any key to continue 看了一下,确实有点不正常
这是为什么呢? 估计压结构体压了多个整数 3e8 是1000,432090 char *name;的地址,42c7cccd float score 当成整数的值,没试,随便猜的,呵呵
页:
[1]