[c/cpp] union - 成员变量在内存中的起始地址相同
一、说明:
1、union成员变量在内存中的起始地址相同
二、代码
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5
6 void msg() {
7
8
9 union user_u {
10 float f;
11 int i;
12 char data[100];
13 };
14
15
16 typedef union user_u useru;
17
18
19 useru uu;
20
21
22 printf("\n");
23 printf("size_useru:\t%ld\n", sizeof(useru));
24 printf("size_uu:\t%ld\n", sizeof(uu));
25
26 strcpy(uu.data, "hello,world!");
27 printf("\n");
28 printf("size_uu.data:\t%s\n", uu.data);
29 printf("size_uu.data_address:\t%p\n", (void*)&uu.data);
30
31 uu.f = 3.1415926;
32 printf("\n");
33 printf("size_uu.f:\t%f\n", uu.f);
34 printf("size_uu.f_address:\t%p\n", (void*)&uu.f);
35
36 uu.i = 8080;
37 printf("\n");
38 printf("size_uu.i:\t%d\n", uu.i);
39 printf("size_uu.i_address:\t%p\n", (void*)&uu.i);
40
41 }
42
43
44 int main(int argc, char *argv[], char *envp[]) {
45
46 msg();
47
48 return 0;
49 }
三、运行结果
size_useru: 100
size_uu: 100
size_uu.data: hello,world!
size_uu.data_address: 0x7ffd4b3fb140
size_uu.f: 3.141593
size_uu.f_address: 0x7ffd4b3fb140
size_uu.i: 8080
size_uu.i_address: 0x7ffd4b3fb140
四、参考资料
1、 C 共用体|菜鸟教程 - https://www.runoob.com/cprogramming/c-unions.html
2、 cpp在线编译器 - https://coliru.stacked-crooked.com/
3、 编译命令 - gcc -Wall -pedantic -pthread main.cpp && ./a.out
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章的版权归属于【原创作者】; 转载或引用时请【保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/18592109