日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ union 公共体

發布時間:2025/3/17 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ union 公共体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
union myun { struct { int x; int y; int z; }u; int k; }a; int main() { a.u.x =4; a.u.y =5; a.u.z =6; a.k = 0; printf("%d %d %d\n",a.u.x,a.u.y,a.u.z); return 0;
//輸出 0,5,6 }

?

union類型是共享內存的,以size最大的結構作為自己的大小,這樣的話,myun這個結構就包含u這個結構體,而大小也等于u這個結構體 的大小,在內存中的排列為聲明的順序x,y,z從低到高,然后賦值的時候,在內存中,就是x的位置放置4,y的位置放置5,z的位置放置6,現在對k賦 值,對k的賦值因為是union,要共享內存,所以從union的首地址開始放置,首地址開始的位置其實是x的位置,這樣原來內存中x的位置就被k所賦的 值代替了,就變為0了,這個時候要進行打印,就直接看內存里就行了,x的位置也就是k的位置是0,而y,z的位置的值沒有改變,所以應該是0,5,6 VS2010親自試了下,確實如此 #include "stdafx.h" #include <iostream> int _tmain(int argc, _TCHAR* argv[]) {union{struct {int a;int b;int c;
     }a;
int k;}b;b.a.a=1;b.a.b=2;b.a.c=3;b.k=9;int aa;std::cout<<b.a.a<<b.a.b<<b.a.c;std::cin>>aa;return 0;
  //輸出 923 }

?

轉載于:https://www.cnblogs.com/holyson/p/3951165.html

總結

以上是生活随笔為你收集整理的C++ union 公共体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。