最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 聯(lián)合(union)用法案例詳解

 更新時間:2021年08月26日 15:15:49   作者:時光漫走  
這篇文章主要介紹了C語言 聯(lián)合(union)用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

聯(lián)合(union)的聲明和結構與結構體類似,但是本質不同。

   聯(lián)合的所有成員引用的是內存中的相同位置。當你想在不同時刻把不同的東西存儲于同一位置時,就可以使用聯(lián)合。

  構體(struct)中所有變量是“共存”的——優(yōu)點是“有容乃大”,全面;缺點是struct內存空間的分配是粗放的,不管用不用,全分配。

  而聯(lián)合體(union)中是各變量是“互斥”的——缺點就是不夠“包容”;但優(yōu)點是內存使用更為精細靈活,也節(jié)省了內存空間。

一個簡單程序的分析

#include "stdio.h"
union{
    int a;
    float b;  
    char c;
}x;
int main()    
{  
    x.c='x';
    x.b=3.14;
    x.a=25;
    printf("%g \t%c \t %d\t\n",x.b,x.c,x.a);
    return 0;          
}

輸出結果為 3.50325e-44       垃圾值     25 

可以看出  只有最后一個x.a=25; 因為x.b會把x.c的地址覆蓋x.a會把x.b的地址覆蓋  所以前兩個打印的都是垃圾值只有最后一個打印正確。

  程序分析2

#include<stdio.h>  
union var{  
        long int l;  
        int i;  
};  
main(){  
        union var v;  
        v.l = 5;  
        printf("v.l is %d\n",v.i);  
        v.i = 6;  
        printf("now v.l is %ld! the address is %p\n",v.l,&v.l);  
        printf("now v.i is %d! the address is %p\n",v.i,&v.i);  
}  
//結果:  
//v.l is 5  
//now v.l is 6! the address is 0xbfad1e2c  
//now v.i is 6! the address is 0xbfad1e2c  

程序分析3

#include<stdio.h>  
union u{  
    int i;  
    double d;//這個union有8字節(jié)大小  
};  
main(){  
    union u uu;  
    uu.i = 10;  
    printf("%d\n",uu.i);  
    char * c;  
    c = (char *)&uu;//把union的首地址賦值、強轉成char類型  
    c[0] = 'a';  
    c[1] = 'b';  
    c[2] = 'c';  
    c[3] = '\0';  
    c[4] = 'd';  
    c[5] = 'e';  
    //最多能到c[7]  
    printf("%s\n",c);//利用結束符'\0'打印字符串"abc"  
    printf("%c %c %c %c %c %c\n",c[0],c[1],c[2],c[3],c[4],c[5]);  
}  

輸出

10
abc
a b c  d e

 printf("%s\n",c);//利用結束符'\0'打印字符串"abc" 字符串以‘\0'結束所以后面未打印

程序分析4

main()
{
   struct
   {
      char name[10];
      int age;
      char job;
      union
      {
         int class;
         char office[10];
      } depa;
   }body[2];
   
  int n,i;
   for(i=0;i<2;i++)
   {
      printf("input name,age,job and department\n");
      scanf("%s %d %c",body[i].name,&body[i].age,&body[i].job);
      if(body[i].job=='s')
         scanf("%d",&body[i].depa.class);
      else
         scanf("%s",body[i].depa.office);
   }
   printf("name\tage job class/office\n");
   for(i=0;i<2;i++)
   {
   if(body[i].job=='s')
      printf("%s\t%3d %3c %d\n",body[i].name,body[i].age ,body[i].job,body[i].depa.class);
   else
      printf("%s\t%3d %3c %s\n",body[i].name,body[i].age, body[i].job,body[i].depa.office);
   }
}

到此這篇關于C語言 聯(lián)合(union)用法案例詳解的文章就介紹到這了,更多相關C語言 聯(lián)合(union)用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • opencv3/C++關于移動對象的輪廓的跟蹤詳解

    opencv3/C++關于移動對象的輪廓的跟蹤詳解

    今天小編就為大家分享一篇opencv3/C++關于移動對象的輪廓的跟蹤詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 利用C語言解決八皇后問題以及解析

    利用C語言解決八皇后問題以及解析

    這篇文章主要給大家介紹了關于利用C語言解決八皇后問題以及解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • C語言實現(xiàn)SM4加解密方式

    C語言實現(xiàn)SM4加解密方式

    這篇文章主要介紹了C語言實現(xiàn)SM4加解密方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Opencv?視頻讀取與寫入的實現(xiàn)示例

    Opencv?視頻讀取與寫入的實現(xiàn)示例

    本文將介紹如何使用OpenCV進行視頻讀寫。通過閱讀本文,您將了解如何讀取視頻文件、處理視頻幀、寫入視頻文件等操作,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • Qt利用QState狀態(tài)機實現(xiàn)控件互斥操作詳解

    Qt利用QState狀態(tài)機實現(xiàn)控件互斥操作詳解

    這篇文章主要為大家詳細介紹了Qt如何利用QState狀態(tài)機實現(xiàn)控件互斥操作,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-12-12
  • 淺談socket TCP編程中connect的一些坑

    淺談socket TCP編程中connect的一些坑

    下面小編就為大家?guī)硪黄獪\談socket TCP編程中connect的一些坑。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C/C++中可變參數(shù)的用法詳細解析

    C/C++中可變參數(shù)的用法詳細解析

    可變參數(shù)的使用方法遠遠不止以下介紹的幾種,不過在C,C++中使用可變參數(shù)時要小心,在使用printf()等函數(shù)時傳入的參數(shù)個數(shù)一定不能比前面的格式化字符串中的’%’符號個數(shù)少,否則會產(chǎn)生訪問越界,運氣不好的話還會導致程序崩潰
    2013-09-09
  • C++ const修飾變量和修飾函數(shù)介紹

    C++ const修飾變量和修飾函數(shù)介紹

    這篇文章主要介紹了C++ const修飾變量和修飾函數(shù)介紹,本文直接用實例來講解各自的作用,并總結了各自的使用技巧,需要的朋友可以參考下
    2015-03-03
  • 詳解C語言實現(xiàn)推箱子的基本功能

    詳解C語言實現(xiàn)推箱子的基本功能

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)推箱子的基本功能的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 利用C++制作人生模擬器游戲的示例代碼

    利用C++制作人生模擬器游戲的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C++制作一個當下很火的人生模擬器游戲,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-05-05

最新評論

江永县| 梓潼县| 防城港市| 肥城市| 碌曲县| 高唐县| 凤冈县| 长海县| 项城市| 陆丰市| 察隅县| 大厂| 固安县| 大名县| 通辽市| 鄂伦春自治旗| 孟村| 刚察县| 沈丘县| 勃利县| 泉州市| 额济纳旗| 安达市| 陕西省| 察隅县| 东源县| 壶关县| 潼关县| 钟山县| 九台市| 雅江县| 弋阳县| 溧水县| 长岭县| 大悟县| 友谊县| 新竹县| 台山市| 新巴尔虎右旗| 灵石县| 内黄县|