znevegiveup1
唐僧爱吃唐僧肉
采纳率31.7%
2017-05-21 08:19

求解!跪求大神相助;

已采纳

#include 
int main()
{  
    union
    { 
        int i[2];
        int k;
        int c;
    }t,*s = &t;
     
    s->i[0] = 10;
    s->i[1] = 20;
    s->k=30;
    printf("%d\n", s->k);    
    printf("%d\n", s->i[0]); 
    printf("%d\n", s->c);   
    return 0;
}
这个程序输出的值为什么都是三十?求大神指教。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 4年前

    联合体存储是共享的,所以看最后一个赋值怎么覆盖的内存。

    点赞 评论 复制链接分享
  • shen_wei shen_wei 4年前
     int n = sizeof(t);    //内存是8,是以最大的变量为内存空间。。
    
      printf("%d\n", s->i[1]);   //这个值就是20 
    
    点赞 评论 复制链接分享
  • what951006 小乌龟在大乌龟背上 4年前

    1L解释完美,plus:一般项目使用较少

    点赞 评论 复制链接分享

相关推荐