认真学好C语言 发表于 2021-6-10 21:14:53

共用体

为什么输出时的数据于输入时的数据不服?
printf(" test.i: %d\n",test.i);
        printf(" test.pi:%.2f\n",test.pi);
        printf("test.str:%s\n",test.str);
#include<stdio.h>
#include<string.h>
union Test
{
        int i;
        double pi;
        char str;
};
int main(void)
{
        union Test test;
        test.i=520;
        test.pi=3.14;
        strcpy(test.str,"FishC");
       
        printf("addr of test.i: %p\n",&test.i);
        printf("addr of test.pi:%p\n",&test.pi);
        printf("addr of test.str:%p\n",&test.str);
        printf(" test.i: %d\n",test.i);
        printf(" test.pi:%.2f\n",test.pi);
        printf("test.str:%s\n",test.str);
        return 0;
}

人造人 发表于 2021-6-10 21:40:38

$ ./main
addr of test.i: 0xffffcc38
addr of test.pi:0xffffcc38
addr of test.str:0xffffcc38
test.i: 1752394054
test.pi:3.13
test.str:FishC

对 test 的最后一次赋值是 strcpy(test.str,"FishC");
所以 test.str:FishC 这个输出没问题,(共用体)union 就是共用一个位置,后一个覆盖前一个,只会保留最后一次赋值

万千只cnm 发表于 2021-6-10 23:13:18

公用一个内存啊(取最大的成员长度)
会互相覆盖      
页: [1]
查看完整版本: 共用体