`
Stephanie_1
  • 浏览: 10512 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

union 和struct的sizeof问题

 
阅读更多

//还没有想过union和struct有啥区别,因为我就没有用过union,今天在一个题目中才发现了:



union{
	char bj[5];
	int bh[2];
	int hh[3];
}u;
class C
{
	char bj[5];
	int bh[2];
	int hh[3];
};


struct  
{
	char bj[5];
	int bh[2];
	int hh[3];
}s;
strcpy(u.bj, "54");
cout<<"u.bj:  "<<u.bj<<endl;
u.bh[0] = 3;
u.bh[1] = 5;
cout<<"u.bj:  "<<u.bj<<endl;
cout<<"u.bh:  "<<u.bh[0]<<u.bh[1]<<endl;

cout<<"sizeof u: "<<sizeof(u)<<endl;
cout<<"sizeof c: "<<sizeof(C)<<endl;
cout<<"sizeof s: "<<sizeof(s)<<endl;


//运行如下:


//最后查完了, 原来struct 的大小是其最大数据类型的整数倍,而Union只和最大的数据类型相关,查的说是Union所有的数据成员在一个内存单元中,这就是为什么当u中的其

//他数据成员被修改了之后,最开始被赋值的bj字符串变成了奇怪的符号。

分享到:
评论

相关推荐

    c++ 面试题 总结

    struct X { unsigned char s1:2; unsigned char s2:3; unsigned char s3:3; } x; unsigned char c; } v; v.c = 100; printf("%d", v.x.s3); } 3 --------------------------------------------------...

    ( 滴滴出行2017秋招系统岗笔试真题汇总.pdf )

    ( 滴滴出行2017秋招系统岗笔试真题汇总.pdf ) ( 滴滴出行2017秋招系统岗笔试真题汇总.pdf ) ( 滴滴出行2017秋招系统岗笔试真题汇总.pdf ) ( 滴滴出行2017秋招系统岗笔试真题汇总.pdf )

    Linux部分C程序

    知道struct的sizeof不是成员类型大小的简单相加,对”对界”问题搞的不是很明白,请高手详细解答一下。 struct A { int a; char b; double c; }; sizeof(A)=? 还有利用#pragma pack设置对齐方式是怎么回事? 字串9

    嵌入式面试资料(嵌入式程序员面试须知)

    (3)c语言问题,union和struct 的区别? 共享一个存储单元和按定义分配存储单元。 (4)sizeof(一大堆变量),如果用这个函数分配内存的大小一定与定义相同吗? 答曰:想不相同不清楚,但是肯定的是指回答不会小,...

    系统内核结构

    typedef struct _EPROCESS_XP_SP3 // 107 elements, 0x260 bytes (sizeof) { /*0x000*/ struct _KPROCESS_XP_SP3 Pcb; // 29 elements, 0x6C bytes (sizeof) /*0x06C*/ struct _EX_PUSH_LOCK ProcessLock; // 5 ...

    浅析C++字节对齐容易被忽略的两个问题

    在这里就分享两条开发中曾经忽略的问题:1、Union(联合体)的字节对齐先看代码:#pragma pack(4)struct com{ union { double dTest; int nTest; char szTest[14]; }; char chTest1; char chTest2;};#pragma...

    C语言笔试题答案

    则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_______ data是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20。 data是一个struct, 每个变量分开占用...

    C++100天经典实战系(含大量案例源码及通俗讲解教程,effective_c++、STL、综合能力全面提升)

    友元函数与友元类、引用与指针那些事、深入浅出C++虚函数的vptr与vtable、宏那些事、范围解析运算符那些事、从初级到高级的enum那些事、纯虚函数和抽象类、volatile、virtual、using、union、this、struct_class、...

    C语言面试总结

    1.2 函数与头文件 1.3 C预处理器 1.4 将一个字符转换为long型 1.5 strcpy函数 ...1.21 struct和union的区别 1.22 char字符变量与int整型数据 1.23 字,字节,字符,比特 1.24 空格、空字符、字符数组结束符的区别

    TestSystem

    typedef struct { CByte a; CWord b; CInt c; } testStruct; if (sizeof(CByte)!=1) { cout&lt;&lt;sizeof(CByte); return 0; } if (sizeof(CWord)!=2) { cout&lt;&lt;sizeof(CWord); return 0; } if ...

    determine_c_or_cpp:从C ++以及各种版本中以编程方式确定C

    C使用struct,union和enum标签作为名称空间的原始形式, 。 因此,以下代码将为C提供sizeof int,为C ++提供sizeof struct T # include extern int T; int size ( void ) { struct T { int i; int j; }; ...

    c++面试题基础分享.doc

    21.结构体struct和共同体union(联合)的区别 22.C++中vector和list的区别 23.结构体和类的区别 24.STL中map和set的原理(关联式容器) 25.MFC的消息机制 26.消息映射 27.列举几种进程的同步机制,并比较其优...

    哈希表查找

    "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while" }; char *key_help_temp[] = { "auto function", "break function", "case function", "char function", "const ...

    c++基础教程,简洁扼要

    union的概念与struct和class定义的类不同, 因为union在同一时间只能存储一个数据成员。但是由union定义的类也是可以有成员函 数的。union定义的类访问权限默认为public。 94 操作符重载(Overloading operators) ...

    c语言的语法大全.doc

    派生数据类型:array, struct, union, enum 等。 指针类型:例如 int*, char* 等。 2. 变量和常量 变量:声明并分配内存空间。 常量:使用 const 关键字声明,值不可改变。 3. 运算符 算术运算符:+, -, *,...

    C_gjz.rar_float

    sizeof static struct switch typedef union unsigned void Volatile while 说明: 1、关键字auto用于说明自动变量,由于变量声明时默认情况下就是自动变量,所以很少使用。 2、volatile(易变的)表示该变量不经过...

    C语言FAQ 常见问题列表

    和 typedef struct { ...} x2; 有什么不同? o 3.2 为什么 struct x { ...}; x thestruct; 不对? o 3.3 一个结构可以包含指向自己的指针吗? o 3.4 在 C 语言中实现抽象数据类型什么方法最好? o 3.5 在 C 中...

    C++基本概念 (面试、复习)

    auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while ...

    C语言 由ANSI标准定义的32个关键字

    auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static

Global site tag (gtag.js) - Google Analytics