&引用;“类别和初始值设定人”;在C中 #包括 联合试验{ int test1; int test2; int test3; }; int testC(联合测试*x,int q,int w,int e){ (x->test3)=q; x--; (x->test2)=w; x--; (x->test1)=e; x--; 返回0; }; int main(){ 联合试验; testC(&hi,5,6,7); printf(“%i,%i,%i\n”,hi.test1,hi.test2,hi.test3); int x,*y=0; x=1; x++; scanf(“%i\n”,y); }

&引用;“类别和初始值设定人”;在C中 #包括 联合试验{ int test1; int test2; int test3; }; int testC(联合测试*x,int q,int w,int e){ (x->test3)=q; x--; (x->test2)=w; x--; (x->test1)=e; x--; 返回0; }; int main(){ 联合试验; testC(&hi,5,6,7); printf(“%i,%i,%i\n”,hi.test1,hi.test2,hi.test3); int x,*y=0; x=1; x++; scanf(“%i\n”,y); },c,class,pointers,methods,unions,C,Class,Pointers,Methods,Unions,上面的代码应该创建一个联合,然后将其所有组件“初始化”为输入,但它只是将自己初始化为第一个。我尝试过使用x++并移动这些值,但似乎没有任何效果。联盟占用的空间与其最大成员所需的空间相同。这意味着它一次只能保存一个成员的值。下面的答案很好地解释了这一点 x--应该做什么?你确定你想要一个联盟吗?似乎您需要一个结构。该union正好由一个int组成。尝试打印sizeof(联合测试),您将看到它与sizeof(int)相同。你要么想要一个结构,要么想要一个数组。不,它不必都是整数,我还想包括字符等。哦

上面的代码应该创建一个联合,然后将其所有组件“初始化”为输入,但它只是将自己初始化为第一个。我尝试过使用x++并移动这些值,但似乎没有任何效果。

联盟占用的空间与其最大成员所需的空间相同。这意味着它一次只能保存一个成员的值。下面的答案很好地解释了这一点


x--应该做什么?你确定你想要一个联盟吗?似乎您需要一个结构。该
union
正好由一个
int
组成。尝试打印
sizeof(联合测试)
,您将看到它与
sizeof(int)
相同。你要么想要一个结构,要么想要一个数组。不,它不必都是整数,我还想包括字符等。哦,我很愚蠢,没关系,对不起:P
#include <stdio.h>
  union test {
    int test1;
    int test2;
    int test3;
  };
  int testC(union test *x, int q, int w, int e) {
    (x->test3)=q;
        x--;
    (x->test2)=w;
        x--;
    (x->test1)=e;
        x--;
    return 0;
  };
  int main() {
    union test hi;
    testC(&hi,5,6,7);
    printf("%i, %i, %i \n", hi.test1, hi.test2, hi.test3);
        int x,*y = 0;
        x = 1;
        x++;
        scanf("%i\n", y);
  }