lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

[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

 

 

posted on 2024-12-07 13:45  lnlidawei  阅读(1)  评论(0编辑  收藏  举报