C语言中的字符占空间大小
下面的一个函数,我有点不懂,哪位知道的,告诉下,多谢了若下面的说明和定义,则sizeof(structaa)的值是多少structaa{intr1;doubler2;fl...
下面的一个函数,我有点不懂,哪位知道的,告诉下,多谢了
若下面的说明和定义,则sizeof(struct aa)的值是多少
struct aa
{ int r1;double r2;float r3;
union uu
{
char u1[5]; long u2[2]
}ua
}mya
我弄不明白的是 为什么后面的那个共用体占了八个字节?
补冲下,共用体的特性用法,我明白
只不过是,不明白,共用体里面的两个函数是什么,这里面的两个,我看不懂,
对不起啊,先前表达的有点不清楚 展开
若下面的说明和定义,则sizeof(struct aa)的值是多少
struct aa
{ int r1;double r2;float r3;
union uu
{
char u1[5]; long u2[2]
}ua
}mya
我弄不明白的是 为什么后面的那个共用体占了八个字节?
补冲下,共用体的特性用法,我明白
只不过是,不明白,共用体里面的两个函数是什么,这里面的两个,我看不懂,
对不起啊,先前表达的有点不清楚 展开
展开全部
这个要看字符数是什么数据类型,可以用sizeof(类型)操作符来测试字节数。
1、英文字母:如果是char 型,那么是占用1个字节,8位。如果是string型,应该是两个字节,16位,因为末尾还有个\0字符。
比如:
char c = 'a';//它占用一个字符
char c[] = "a";//占用两个。
char c[] = "abcde";//占用4+1 = 5 个,结尾有一个'\0'
2、数字:有很多种类,从小到大分别为:
short、int、float、long、double
字节为:1个、2个、4个、8个、8个
位数为:8位、16位、32位、64位、64位
3、汉字:理论上说,一个汉字占用两个字节,16位。比如:中国,就占用4个字节,例如:
char c[] = "中国";//占用4+1 = 5个字符
1、英文字母:如果是char 型,那么是占用1个字节,8位。如果是string型,应该是两个字节,16位,因为末尾还有个\0字符。
比如:
char c = 'a';//它占用一个字符
char c[] = "a";//占用两个。
char c[] = "abcde";//占用4+1 = 5 个,结尾有一个'\0'
2、数字:有很多种类,从小到大分别为:
short、int、float、long、double
字节为:1个、2个、4个、8个、8个
位数为:8位、16位、32位、64位、64位
3、汉字:理论上说,一个汉字占用两个字节,16位。比如:中国,就占用4个字节,例如:
char c[] = "中国";//占用4+1 = 5个字符
展开全部
union所有的成员分享同一内存
char u1[5]的内存小于long u2[2]的内存,
所以ua占用的内存为long u2[2]的大小
两个函数?可能是你没有弄明白整个结构体的结构
可以这样理解:
union uu
{ //定义共用体
char u1[5]; long u2[2]
}
struct aa
{ //结构体共有四个成员
int r1;
double r2;
float r3;
uu ua;//着个成员的类型是公用体uu型 ua占用八个字节
}
aa mya;//定义结构体aa的一个变量mya
//以上和你的等价
char u1[5]的内存小于long u2[2]的内存,
所以ua占用的内存为long u2[2]的大小
两个函数?可能是你没有弄明白整个结构体的结构
可以这样理解:
union uu
{ //定义共用体
char u1[5]; long u2[2]
}
struct aa
{ //结构体共有四个成员
int r1;
double r2;
float r3;
uu ua;//着个成员的类型是公用体uu型 ua占用八个字节
}
aa mya;//定义结构体aa的一个变量mya
//以上和你的等价
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
22
以struct定义的是结构体,结构体变量所占用的内存长度是成员的内存长度之和.每个成员分别占有其自己的内存单元.
以union定义的是共用体变量,共用体变量所占的内存长度等于最和的成员的长度.
因为union是包含在struct里的,所以他是struct的一部分,所以些题共占22个空间
以struct定义的是结构体,结构体变量所占用的内存长度是成员的内存长度之和.每个成员分别占有其自己的内存单元.
以union定义的是共用体变量,共用体变量所占的内存长度等于最和的成员的长度.
因为union是包含在struct里的,所以他是struct的一部分,所以些题共占22个空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
共用体与结构体不同,它的成员共同占有一块内存区域
共用体的大小取决于它最大成员的大小
u1[5]是5字节 u2[2]是8字节
所以共用体占8字节
哪两个? struct? union? sizeof?
你是说后面跟着的ua和mya?
定义一个共用体变量ua和结构体变量mya
共用体的大小取决于它最大成员的大小
u1[5]是5字节 u2[2]是8字节
所以共用体占8字节
哪两个? struct? union? sizeof?
你是说后面跟着的ua和mya?
定义一个共用体变量ua和结构体变量mya
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
引用星月小木木的回答:
这个要看字符数是什么数据类型,可以用sizeof(类型)操作符来测试字节数。
1、英文字母:如果是char 型,那么是占用1个字节,8位。如果是string型,应该是两个字节,16位,因为末尾还有个\0字符。
比如:
char c = 'a';//它占用一个字符
char c[] = "a";//占用两个。
char c[] = "abcde";//占用4+1 = 5 个,结尾有一个'\0'
2、数字:有很多种类,从小到大分别为:
short、int、float、long、double
字节为:1个、2个、4个、8个、8个
位数为:8位、16位、32位、64位、64位
3、汉字:理论上说,一个汉字占用两个字节,16位。比如:中国,就占用4个字节,例如:
char c[] = "中国";//占用4+1 = 5个字符
这个要看字符数是什么数据类型,可以用sizeof(类型)操作符来测试字节数。
1、英文字母:如果是char 型,那么是占用1个字节,8位。如果是string型,应该是两个字节,16位,因为末尾还有个\0字符。
比如:
char c = 'a';//它占用一个字符
char c[] = "a";//占用两个。
char c[] = "abcde";//占用4+1 = 5 个,结尾有一个'\0'
2、数字:有很多种类,从小到大分别为:
short、int、float、long、double
字节为:1个、2个、4个、8个、8个
位数为:8位、16位、32位、64位、64位
3、汉字:理论上说,一个汉字占用两个字节,16位。比如:中国,就占用4个字节,例如:
char c[] = "中国";//占用4+1 = 5个字符
展开全部
char c[] = "abcde";//占用5+1 =6 个,结尾有一个'\0'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询