亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 學c51的基礎 10《 聯(lián) 合(union) 》.txt

?? 單片機的c51用法,基礎篇,誰用的著誰下載
?? TXT
字號:
                            聯(lián)     合(union)
    1. 聯(lián)合說明和聯(lián)合變量定義
    聯(lián)合也是一種新的數(shù)據(jù)類型, 它是一種特殊形式的變量。
    聯(lián)合說明和聯(lián)合變量定義與結構十分相似。其形式為:
     union 聯(lián)合名{
          數(shù)據(jù)類型 成員名;
          數(shù)據(jù)類型 成員名;
          ...
     } 聯(lián)合變量名;
    聯(lián)合表示幾個變量公用一個內存位置, 在不同的時間保存不同的數(shù)據(jù)類型和不同長度的變量。
    下例表示說明一個聯(lián)合a_bc:
     union a_bc{
          int i;
          char mm;
     };
    再用已說明的聯(lián)合可定義聯(lián)合變量。例如用上面說明的聯(lián)合定義一個名為lgc的聯(lián)合變量, 可寫成:

      union a_bc lgc;

    在聯(lián)合變量lgc中, 整型量i和字符mm公用同一內存位置。
    當一個聯(lián)合被說明時, 編譯程序自動地產生一個變量, 其長度為聯(lián)合中最大的變量長度。
    聯(lián)合訪問其成員的方法與結構相同。同樣聯(lián)合變量也可以定義成數(shù)組或指針,但定義為指針時, 也要用"->"符號, 此時聯(lián)合訪問
成員可表示成:

     聯(lián)合名->成員名

    另外, 聯(lián)合既可以出現(xiàn)在結構內, 它的成員也可以是結構。
    例如:
     struct{
          int age;
          char *addr;
          union{
               int i;
               char *ch;
          }x;
     }y[10];

    若要訪問結構變量y[1]中聯(lián)合x的成員i, 可以寫成:

      y[1].x.i;

    若要訪問結構變量y[2]中聯(lián)合x的字符串指針ch的第一個字符可寫成:

      *y[2].x.ch;

    若寫成"y[2].x.*ch;"是錯誤的。

    2. 結構和聯(lián)合的區(qū)別
    結構和聯(lián)合有下列區(qū)別:
    1. 結構和聯(lián)合都是由多個不同的數(shù)據(jù)類型成員組成, 但在任何同一時刻, 聯(lián)合中只存放了一個被選中的成員, 而結構的所有成
員都存在。
    2. 對于聯(lián)合的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對于結構的不同成員賦值是互不影響的。
    下面舉一個例了來加對深聯(lián)合的理解。
    例4:

     main()
     {
          union{                   /*定義一個聯(lián)合*/
               int i;
               struct{             /*在聯(lián)合中定義一個結構*/
                    char first;
                    char second;
               }half;
          }number;
          number.i=0x4241;         /*聯(lián)合成員賦值*/
          printf("%c%c\n", number.half.first, mumber.half.second);
          number.half.first='a';   /*聯(lián)合中結構成員賦值*/
          number.half.second='b';
          printf("%x\n", number.i);
          getch();
     }

    輸出結果為:
     AB
     6261

    從上例結果可以看出: 當給i賦值后, 其低八位也就是first和second的值; 當給first和second賦字符后, 這兩個字符的ASCII
碼也將作為i 的低八位和高八位。
  ................................................................................................................
                      學C51的基礎 10a《 結構(struct) 》 [cmh]
                               結構(struct)

    結構是由基本數(shù)據(jù)類型構成的、并用一個標識符來命名的各種變量的組合。結構中可以使用不同的數(shù)據(jù)類型。

    1. 結構說明和結構變量定義
    在Turbo C中, 結構也是一種數(shù)據(jù)類型, 可以使用結構變量, 因此, 象其它類型的變量一樣, 在使用結構變量時要先對其定義。
    定義結構變量的一般格式為:
     struct 結構名
     {
          類型  變量名;
          類型  變量名;
          ...
     } 結構變量;
    結構名是結構的標識符不是變量名。
    類型為第二節(jié)中所講述的五種數(shù)據(jù)類型(整型、浮點型、字符型、指針型和無值型)。
    構成結構的每一個類型變量稱為結構成員, 它象數(shù)組的元素一樣, 但數(shù)組中元素是以下標來訪問的, 而結構是按變量名字來訪
問成員的。
    下面舉一個例子來說明怎樣定義結構變量。
     struct string
     {
          char name[8];
          int age;
          char sex[2];
          char depart[20];
          float wage1, wage2, wage3, wage4, wage5;
     } person;
    這個例子定義了一個結構名為string的結構變量person, 如果省略變量名person, 則變成對結構的說明。用已說明的結構名也
可定義結構變量。這樣定義時上例變成:
     struct string
     {
          char name[8];
          int age;
          char sex[2];
          char depart[20];
          float wage1, wage2, wage3, wage4, wage5;
     };
     struct string person;
    如果需要定義多個具有相同形式的結構變量時用這種方法比較方便, 它先作結構說明, 再用結構名來定義變量。
    例如:
     struct string Tianyr, Liuqi, ...;
    如果省略結構名, 則稱之為無名結構, 這種情況常常出現(xiàn)在函數(shù)內部, 用這種結構時前面的例子變成:
     struct
     {
          char name[8];
          int age;
          char sex[2];
          char depart[20];
          float wage1, wage2, wage3, wage4, wage5;
     } Tianyr, Liuqi;


    2. 結構變量的使用
    結構是一個新的數(shù)據(jù)類型, 因此結構變量也可以象其它類型的變量一樣賦值、運算, 不同的是結構變量以成員作為基本變量。
    結構成員的表示方式為:
          結構變量.成員名
    如果將"結構變量.成員名"看成一個整體, 則這個整體的數(shù)據(jù)類型與結構中該成員的數(shù)據(jù)類型相同, 這樣就可象前面所講的變量
那樣使用。
    下面這個例子定義了一個結構變量, 其中每個成員都從鍵盤接收數(shù)據(jù), 然后對結構中的浮點數(shù)求和, 并顯示運算結果, 同時將
數(shù)據(jù)以文本方式存入一個名為wage.dat的磁盤文件中。請注意這個例子中不同結構成員的訪問。
    例3:
     #include < stdio.h >
     main()
     {
          struct{                       /*定義一個結構變量*/
               char name[8];
               int age;
               char sex[2];
               char depart[20];
               float wage1, wage2, wage3, wage4, wage5;
          }a;
          FILE *fp;
          float wage;
          char c='Y';
          fp=fopen("wage.dat", "w");    /*創(chuàng)建一個文件只寫*/
          while(c=='Y'||c=='y')         /*判斷是否繼續(xù)循環(huán)*/
          {
               printf("\nName:");
               scanf("%s", a.name);     /*輸入姓名*/
               printf("Age:");
               scanf("%d", &a.wage);    /*輸入年齡*/
               printf("Sex:");
               scanf("%d", a.sex);
               printf("Dept:");
               scanf("%s", a.depart);
               printf("Wage1:");
               scanf("%f", &a.wage1);   /*輸入工資*/
               printf("Wage2:");
               scanf("%f", &a.wage2);
               printf("Wage3:");
               scanf("%f", &a.wage3);
               printf("Wage4:");
               scanf("%f", &a.wage4);
               printf("Wage5:");
               scanf("%f", &a.wage5);
               wage=a.wage1+a.wage2+a.wage3+a.wage4+a.wage5;
               printf("The sum of wage is %6.2f\n", wage);      /*顯示結果*/
               fprintf(fp, "%10s%4d%4s%30s%10.2f\n",            /*結果寫入文件*/
                            a.name, a.age, a.sex, a.depart, wage);
               while(1)
               {
                    printf("Continue?");
                    c=getche();
                    if(c=='Y'||c=='y'||c=='N'||c=='n')
                         break;
               }
          }
          fclose(fp);
     }


    3. 結構數(shù)組和結構指針
    結構是一種新的數(shù)據(jù)類型, 同樣可以有結構數(shù)組和結構指針。
    一、結構數(shù)組
    結構數(shù)組就是具有相同結構類型的變量集合。假如要定義一個班級40個同學的姓名、性別、年齡和住址, 可以定義成一個結構
數(shù)組。如下所示:
     struct{
          char name[8];
          char sex[2];
          int age;
          char addr[40];
     }student[40];
    也可定義為:
     struct string{
          char name[8];
          char sex[2];
          int age;
          char addr[40];
     };
     struct string student[40];
    需要指出的是結構數(shù)組成員的訪問是以數(shù)組元素為結構變量的, 其形式為:
          結構數(shù)組元素.成員名
    例如:
      student[0].name
      student[30].age
    實際上結構數(shù)組相當于一個二維構造, 第一維是結構數(shù)組元素, 每個元素是一個結構變量, 第二維是結構成員。
    注意:
    結構數(shù)組的成員也可以是數(shù)組變量。
    例如:
     struct a
     {
          int m[3][5];
          float f;
          char s[20];
     }y[4];
    為了訪問結構a中結構變量y[2]的這個變量, 可寫成
       y[2].m[1][4]

    二、結構指針
    結構指針是指向結構的指針。它由一個加在結構變量名前的"*"操作符來定義, 例如用前面已說明的結構定義一個結構指針如下:
     struct string{
          char name[8];
          char sex[2];
          int age;
          char addr[40];
     }*student;
    也可省略結構指針名只作結構說明, 然后再用下面的語句定義結構指針。
      struct string *student;
    使用結構指針對結構成員的訪問, 與結構變量對結構成員的訪問在表達方式上有所不同。結構指針對結構成員的訪問表示為:
       結構指針名->結構成員
    其中"->"是兩個符號"-"和">"的組合, 好象一個箭頭指向結構成員。例如要給上面定義的結構中name和age賦值, 可以用下面語
句:
     strcpy(student->name, "Lu G.C");
     student->age=18;
    實際上, student->name就是(*student).name的縮寫形式。
    需要指出的是結構指針是指向結構的一個指針, 即結構中第一個成員的首地址, 因此在使用之前應該對結構指針初始化, 即分
配整個結構長度的字節(jié)空間, 這可用下面函數(shù)完成, 仍以上例來說明如下:
     student=(struct string*)malloc(size of (struct string));
    size of (struct string)自動求取string結構的字節(jié)長度, malloc() 函數(shù)定義了一個大小為結構長度的內存區(qū)域, 然后將其
地址作為結構指針返回。

    注意:
    1. 結構作為一種數(shù)據(jù)類型, 因此定義的結構變量或結構指針變量同樣有局部變量和全程變量, 視定義的位置而定。
    2. 結構變量名不是指向該結構的地址, 這與數(shù)組名的含義不同, 因此若需要求結構中第一個成員的首地址應該是&[結構變量
名]。
    4. 結構的復雜形式
    一、嵌套結構
    嵌套結構是指在一個結構成員中可以包括其它一個結構, Turbo C 允許這種嵌套。
    例如: 下面是一個有嵌套的結構
     struct string{
          char name[8];
          int age;
          struct addr address;
     } student;
    其中: addr為另一個結構的結構名, 必須要先進行, 說明, 即
     struct addr{
          char city[20];
          unsigned lon zipcode;
          char tel[14];
     }
    如果要給student結構中成員address結構中的zipcode賦值, 則可寫成:

      student.address.zipcode=200001;

    每個結構成員名從最外層直到最內層逐個被列出, 即嵌套式結構成員的表達方式是:

      結構變量名.嵌套結構變量名.結構成員名

    其中: 嵌套結構可以有很多, 結構成員名為最內層結構中不是結構的成員名。

    二、位結構
    位結構是一種特殊的結構,在需按位訪問一個字節(jié)或字的多個位時,位結構比按位運算符更加方便。
    位結構定義的一般形式為:

     struct位結構名{
          數(shù)據(jù)類型 變量名: 整型常數(shù);
          數(shù)據(jù)類型 變量名: 整型常數(shù);
     } 位結構變量;

    其中: 數(shù)據(jù)類型必須是int(unsigned或signed)。 整型常數(shù)必須是非負的整數(shù), 范圍是0~15, 表示二進制位的個數(shù), 即表示有
多少位。
    變量名是選擇項, 可以不命名, 這樣規(guī)定是為了排列需要。
    例如: 下面定義了一個位結構。

     struct{
          unsigned incon: 8;  /*incon占用低字節(jié)的0~7共8位*/
          unsigned txcolor: 4;/*txcolor占用高字節(jié)的0~3位共4位*/
          unsigned bgcolor: 3;/*bgcolor占用高字節(jié)的4~6位共3位*/
          unsigned blink: 1;  /*blink占用高字節(jié)的第7位*/
     }ch;

    位結構成員的訪問與結構成員的訪問相同。
    例如: 訪問上例位結構中的bgcolor成員可寫成:

      ch.bgcolor

    注意:
    1. 位結構中的成員可以定義為unsigned, 也可定義為signed, 但當成員長度為1時, 會被認為是unsigned類型。因為單個位不
可能具有符號。
    2. 位結構中的成員不能使用數(shù)組和指針, 但位結構變量可以是數(shù)組和指針, 如果是指針, 其成員訪問方式同結構指針。
    3. 位結構總長度(位數(shù)), 是各個位成員定義的位數(shù)之和,  可以超過兩個字節(jié)。
    4. 位結構成員可以與其它結構成員一起使用。
    例如:

     struct info{
          char name[8];
          int age;
          struct addr address;
          float pay;
          unsigned state: 1;
          unsigned pay: 1;
          }workers;'

    上例的結構定義了關于一個工從的信息。其中有兩個位結構成員, 每個位結構成員只有一位, 因此只占一個字節(jié)但保存了兩個
信息, 該字節(jié)中第一位表示工人的狀態(tài), 第二位表示工資是否已發(fā)放。由此可見使用位結構可以節(jié)省存貯空間。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区在线观看| 天天综合网 天天综合色| 日韩一区国产二区欧美三区| 欧美日韩你懂的| 欧美精品色综合| 91精品国产综合久久国产大片| 国产日韩欧美精品在线| 国产精品拍天天在线| 亚洲欧美电影院| 视频一区二区三区在线| 精品一区二区三区不卡| 国产91在线观看| 91在线视频在线| 欧美日韩国产另类一区| 精品福利在线导航| 日本一区二区三区视频视频| 日本aⅴ免费视频一区二区三区 | 自拍偷拍亚洲激情| 亚洲一二三专区| 激情都市一区二区| 99国产欧美另类久久久精品 | 欧美日韩一区二区在线视频| 中文字幕一区二| 天天综合天天做天天综合| 色呦呦国产精品| 精品国精品国产| 日av在线不卡| 日韩免费观看高清完整版| 亚洲精品高清视频在线观看| 韩国在线一区二区| 精品日韩一区二区三区免费视频| 国产精品久久久爽爽爽麻豆色哟哟| 性欧美疯狂xxxxbbbb| jvid福利写真一区二区三区| 欧美一区二区三区免费大片| 天天影视涩香欲综合网| 91超碰这里只有精品国产| 亚洲国产精品激情在线观看| 日韩专区在线视频| 欧美精品乱码久久久久久| 日本v片在线高清不卡在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 国产麻豆日韩欧美久久| 欧洲一区二区三区免费视频| 久久噜噜亚洲综合| 青青草伊人久久| 精品国产一区二区三区久久影院| 国产一区二区看久久| 中文字幕欧美日韩一区| 91农村精品一区二区在线| 国产日韩欧美综合在线| 91香蕉国产在线观看软件| 亚洲激情男女视频| 91麻豆精品国产91久久久使用方法 | 懂色av一区二区三区免费看| 中文欧美字幕免费| 欧美成人精品二区三区99精品| 美女网站色91| 欧美久久久久中文字幕| 六月丁香综合在线视频| 69堂国产成人免费视频| 国产在线乱码一区二区三区| 国产精品成人一区二区三区夜夜夜 | 国产精品一二三四五| 精品人在线二区三区| 国产精品原创巨作av| 亚洲天堂免费看| 欧美tickling网站挠脚心| 国产+成+人+亚洲欧洲自线| 亚洲在线中文字幕| 久久久噜噜噜久噜久久综合| 91美女片黄在线| 久久99久久久欧美国产| 亚洲欧美日韩系列| 久久精品综合网| 丰满少妇久久久久久久| 亚洲一区在线观看免费观看电影高清| 日韩视频在线你懂得| 91原创在线视频| 国产麻豆精品视频| 日韩高清一级片| 日韩欧美一区在线观看| av在线不卡网| 国产美女在线精品| 奇米影视在线99精品| 亚洲精品综合在线| 中文字幕 久热精品 视频在线| 日韩西西人体444www| 欧美性大战久久| 久久疯狂做爰流白浆xx| 亚洲国产日产av| 久久久久久久久蜜桃| 欧美性色欧美a在线播放| 国产91丝袜在线18| 国产精品综合二区| 日韩av不卡一区二区| 一级精品视频在线观看宜春院 | 久久精品亚洲乱码伦伦中文| 91精品欧美综合在线观看最新| av中文字幕不卡| 成人蜜臀av电影| 亚洲图片欧美色图| 亚洲激情在线激情| 亚洲欧美一区二区三区久本道91| 国产视频在线观看一区二区三区| 日韩欧美电影在线| 精品免费国产二区三区| 日韩欧美高清在线| 一区av在线播放| 亚洲精品免费在线观看| 亚洲欧洲性图库| 亚洲三级理论片| 亚洲女与黑人做爰| 亚洲综合久久久| 天天操天天色综合| 琪琪久久久久日韩精品| 亚洲成人黄色影院| 青青草97国产精品免费观看| 蜜臀a∨国产成人精品| 另类专区欧美蜜桃臀第一页| 青青草原综合久久大伊人精品优势| 青草国产精品久久久久久| 日韩av午夜在线观看| 免费观看91视频大全| 国精品**一区二区三区在线蜜桃| 九色综合国产一区二区三区| 国产尤物一区二区| 成人涩涩免费视频| 91视频观看视频| 欧美日韩一级片在线观看| 欧美久久高跟鞋激| 欧美不卡视频一区| 国产精品看片你懂得| 亚洲精品国产品国语在线app| 一区二区在线观看视频| 日本麻豆一区二区三区视频| 狠狠色丁香婷婷综合| 国产91精品久久久久久久网曝门 | 欧美日韩电影在线| 欧美精品一区男女天堂| 亚洲欧洲一区二区三区| 视频一区视频二区在线观看| 黄网站免费久久| 91免费看片在线观看| 欧美喷水一区二区| 国产三区在线成人av| 亚洲美女免费视频| 蜜乳av一区二区| 成人伦理片在线| 欧美一区二区三区色| 国产精品免费视频观看| 天使萌一区二区三区免费观看| 狠狠色丁香久久婷婷综合_中| 97久久精品人人做人人爽50路| 7777精品伊人久久久大香线蕉| 欧美激情一区不卡| 欧美a级一区二区| 99re视频精品| 精品国产露脸精彩对白| 亚洲精品国产成人久久av盗摄| 久久国产婷婷国产香蕉| 91网站在线播放| 久久人人爽爽爽人久久久| 亚洲黄色av一区| 丰满放荡岳乱妇91ww| 日韩视频在线观看一区二区| 亚洲激情av在线| 成人在线视频一区| 亚洲精品一区二区三区四区高清 | 国产精品一区专区| 91麻豆精品国产91| 亚洲老司机在线| 成人av影院在线| 91老师片黄在线观看| 久久久91精品国产一区二区三区| 丝袜国产日韩另类美女| 色综合色综合色综合 | 欧美va亚洲va在线观看蝴蝶网| 亚洲免费色视频| 成人激情午夜影院| 久久精品综合网| 国内精品免费在线观看| 欧美一区二区精品| 日日夜夜免费精品视频| 欧美熟乱第一页| 亚洲色图.com| 99久久婷婷国产| 欧美国产日产图区| 成人性生交大合| 国产精品视频一区二区三区不卡| 国产精品一区二区视频| 26uuu国产电影一区二区| 亚洲精品国产无天堂网2021| 成人av影视在线观看| 日本一区二区动态图| 成人午夜视频福利| 亚洲欧洲性图库| 一本久久a久久精品亚洲| 日韩美女精品在线| 欧洲一区二区三区在线|