struct test
{
int num;
int pcname;
short sdate;
char cha[2];
short sba[4];
}* p;
//假设p的值为0x100000。如下表达式的值为多少
//一直,结构体test类型的变量大小是20个字节
int main()
{
p = (struct test*)0x100000;
printf("%p\n", (unsigned int*)p + 0x1);//0x0000000000100004 后面是我用vs2022编译跑出来的结果
return 0;
}
我想问一下我的电脑是64位的,unsigned int*不应该是占8个字节么,输出的不应该是0x0000000000100008么,我想知道为什么这里还是4
64位的unsigned int占8字节??
不都是4字节吗
32位编译器:
*char/unsigned char :1字节
char :4字节
short int:2字节
int/unsigned int:4字节
long int:4字节
float:4字节
double:8字节
long long:8字节
long double:12字节
64位编译器:
char/unsigned char :1字节
char *:8字节
short int:2字节
int/unsigned int:4字节
long int:8字节
float:4字节
double:8字节
long long:8字节
long double:16字节
int 类型都是占用4个字节的,你可以运行sizeof(int)查看返回的值,就知道占用多少个字节了。