C语言联合体和结构体中变量所占内存

大哥大姐们帮我问下,C语言联合体和结构体中变量所占内存?

union U
{char st[4];
int i ;};
struct A
{ int c;
union U u ;
}a;
求变量a所占内存字节数 麻烦讲解详细 谢谢 运行环境为turbo C
最新回答
宣我会死啊

2025-03-02 03:46:09

union U两个成员变量,一个字符数组st占4个字节,一个整型i占4个字节,所以两者共用4个字节,union U占4字节。

struct A两个成员变量,一个整型c占4个字节,一个union U类型的u,也占4个字节。所以struct A的大小为两者之和,4+4=8字节。
注,因为这些成员变量都是4字节大小,所以不用考虑字节补齐等因素。
错在情深

2025-03-02 02:00:13

共用体:
sizeof(union data1)的值为16.在
编译器
默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占9个字节,那么整个共用体应该占9个字节,但按照对齐原则,实际分配给它的内存为16字节。

结构体:
struct data以8个字节对齐,long类型的成员1分配8个字节。s、i、c、a原本分别占4、2、1、10个字节。由于考虑到对齐,s分配4个字节,i分配 2个字节,c分配2个字节,此时刚好用完8个字节。a原本分配10个字节,由于考虑到对齐,要使整个结构体所占的存储空间是8的倍数,所以分配给它16个字节。因此结构体data占8+4+4+2+16=32个字节。
ー別經哖ぴ

2025-03-02 07:17:03

union的内存大小由其占有内存最大的成员决定,所以union U{char st[4];int i ;};的字节数是4个字节。结构体所占内存由所以成员的字节数相加,所以a的大小为1+4=5.给分吧
追逐明天

2025-03-02 04:05:07

union U
{char st[4];//4
int i ;};//2
//总共4
struct A
{ int c; //2
union U u ;//4
}a;//总共6

如果有turbo C自己用sizeof看一下也行,如果没有turbo C千万不要用sizeof
行尸走肥肉

2025-03-02 01:35:53

直接
sizeof a
自己看就好了……