当前位置:首页 > 内存 > 正文

结构体所占内存大小

  • 内存
  • 2024-05-19 06:46:30
  • 7702

一、C语言联合体和结构体中变量所占内存UnionU有两个成员变量,一个占4个字节的字符数组st和一个占4个字节的整数i,所以两者共用4个字节,UnionU占4个字节。
StructA有两个成员变量,一个占用4字节的整数c和一个同样占用4字节的unionU类型。所以structA的大小是两者之和,4+4=8字节。
注意,因为这些成员变量的大小都是4字节,所以不需要考虑字节补全等因素。


二、c语言这个程序怎么解释p+0x1=0x100014
p为结构体首地址,则p+1为指向下一个结构体的地址,一个结构体占用的内存为sizeof(structTest)=20。
(unsignedlong)p+0x1=0x100001
p的值为0x100000的地址值。(unsignedlong)p将p转换为无符号长整型值。加1后就是0x100001。>
(unsignedint*)p+0x1=0x100004
p的值为0x100000的地址值,(unsignedint*)p将p转换为无符号长指针,而c/c++语言中,长整型指针占用四个内存,因此其值为:0x100004