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

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

?? 7_結構與聯合.txt

?? 一些c的經典案例
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
結構與聯合
結構類型定義和結構變量說明
    在實際問題中,一組數據往往具有不同的數據類型。例如, 在
學生登記表中,姓名應為字符型;學號可為整型或字符型; 年齡應
為整型;性別應為字符型;成績可為整型或實型。 顯然不能用一個
數組來存放這一組數據。 因為數組中各元素的類型和長度都必須一
致,以便于編譯系統處理。為了解決這個問題,C語言中給出了另一
種構造數據類型——“結構”。 它相當于其它高級語言中的記錄。
“結構”是一種構造類型,它是由若干“成員”組成的。 每一個成
員可以是一個基本數據類型或者又是一個構造類型。 結構既是一種
“構造”而成的數據類型, 那么在說明和使用之前必須先定義它,
也就是構造它。如同在說明和調用函數之前要先定義函數一樣。
一、結構的定義
    定義一個結構的一般形式為:    struct 結構名  
    {  
      成員表列  
    };      成員表由若干個成員組成, 每個成員都是該結構的一個組成部
分。對每個成員也必須作類型說明,其形式為:    類型說明符 成員名;  
成員名的命名應符合標識符的書寫規定。例如:    struct stu
    {
        int num;
        char name[20];
        char sex;
        float score;
    };    在這個結構定義中,結構名為stu,該結構由4個成員組成。 第
一個成員為num,整型變量;第二個成員為name,字符數組;第三個
成員為sex,字符變量;第四個成員為score,實型變量。 應注意在
括號后的分號是不可少的。結構定義之后,即可進行變量說明。 凡
說明為結構stu的變量都由上述4個成員組成。由此可見, 結構是一
種復雜的數據類型,是數目固定,類型不同的若干有序變量的集合。
二、結構類型變量的說明
    說明結構變量有以下三種方法。以上面定義的stu為例來加以說
明。
1. 先定義結構,再說明結構變量。如:    struct stu
    {
        int num;
        char name[20];
        char sex;
        float score;
    };
    struct stu boy1,boy2;
    說明了兩個變量boy1和boy2為stu結構類型。也可以用宏定義使
一個符號常量來表示一個結構類型,例如:    #define STU struct stu
    STU
    {
        int num;
        char name[20];
        char sex;
        float score;
    };
    STU boy1,boy2;
2. 在定義結構類型的同時說明結構變量。例如:    struct stu
    {
        int num;
        char name[20];
        char sex;
        float score;
    }boy1,boy2;
3. 直接說明結構變量。例如:    struct
    {
        int num;
        char name[20];
        char sex;
        float score;
    }boy1,boy2;     第三種方法與第二種方法的區別在于第三種方法中省去了結構
名,而直接給出結構變量。三種方法中說明的boy1,boy2變量都具有
圖7.1所示的結構。說明了boy1,boy2變量為stu類型后,即可向這兩
個變量中的各個成員賦值。在上述stu結構定義中,所有的成員都是
基本數據類型或數組類型。成員也可以又是一個結構, 即構成了嵌
套的結構。例如,圖7.2給出了另一個數據結構。
按圖7.2可給出以下結構定義:    struct date{
        int month;
        int day;
        int year;
    }
    struct{
        int num;
        char name[20];
        char sex;
        struct date birthday;
        float score;
    }boy1,boy2;
    首先定義一個結構date,由month(月)、day(日)、year(年) 三
個成員組成。 在定義并說明變量 boy1 和 boy2 時, 其中的成員
birthday被說明為data結構類型。成員名可與程序中其它變量同名,
互不干擾。結構變量成員的表示方法
    在程序中使用結構變量時, 往往不把它作為一個整體來使用。
在ANSI C中除了允許具有相同類型的結構變量相互賦值以外, 一般
對結構變量的使用,包括賦值、輸入、輸出、 運算等都是通過結構
變量的成員來實現的。表示結構變量成員的一般形式是:    結構變量名.成員名  例如:
    boy1.num          即第一個人的學號
    boy2.sex          即第二個人的性別     如果成員本身又是一個結構則必須逐級找到最低級的成員才能
使用。例如:
    boy1.birthday.month          即第一個人出生的月份成員可以在程序中單獨使用,與普通變量完全相同。結構變量的賦值。
    前面已經介紹,結構變量的賦值就是給各成員賦值。 可用輸入
語句或賦值語句來完成。[例7.1]給結構變量賦值并輸出其值。main()
{
    struct stu
    {
      int num;
      char *name;
      char sex;
      float score;
    } boy1,boy2;
    boy1.num=102;
    boy1.name="Zhang ping";
    printf("input sex and score\n");
    scanf("%c %f",&boy1.sex,&boy1.score);
    boy2=boy1;
    printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
    printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
    struct stu
    {
      int num;
      char *name;
      char sex;
      float score;
    }boy1,boy2;
    boy1.num=102;
    boy1.name="Zhang ping";
    printf("input sex and score\n");
    scanf("%c %f",&boy1.sex,&boy1.score);
    boy2=boy1;
    printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
    printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
    本程序中用賦值語句給num和name兩個成員賦值,name是一個字
符串指針變量。用scanf函數動態地輸入sex和score成員值,然后把
boy1的所有成員的值整體賦予boy2。最后分別輸出boy2 的各個成員
值。本例表示了結構變量的賦值、輸入和輸出的方法。結構變量的初始化
    如果結構變量是全局變量或為靜態變量, 則可對它作初始化賦
值。對局部或自動結構變量不能作初始化賦值。[例7.2]外部結構變量初始化。struct stu    /*定義結構*/
    {
      int num;
      char *name;
      char sex;
      float score;
    } boy2,boy1={102,"Zhang ping",'M',78.5};
main()
{
    boy2=boy1;
    printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
    printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
    struct stu
        {
          int num;
          char *name;
          char sex;
          float score;
        }boy2,boy1={102,"Zhang ping",'M',78.5};
main()
{  
   boy2=boy1;
   ……
}
    本例中,boy2,boy1均被定義為外部結構變量,并對boy1作了初
始化賦值。在main函數中,把boy1的值整體賦予boy2, 然后用兩個
printf語句輸出boy2各成員的值。[例7.3]靜態結構變量初始化。main()
{
    static struct stu      /*定義靜態結構變量*/
    {
      int num;
      char *name;
      char sex;
      float score;
    }boy2,boy1={102,"Zhang ping",'M',78.5};
    boy2=boy1;
    printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
    printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
    static struct stu
    {
      int num;
      char *name;
      char sex;
      float score;
    }boy2,boy1={102,"Zhang ping",'M',78.5};    本例是把boy1,boy2都定義為靜態局部的結構變量, 同樣可以
作初始化賦值。結構數組
    數組的元素也可以是結構類型的。 因此可以構成結構型數組。
結構數組的每一個元素都是具有相同結構類型的下標結構變量。 在
實際應用中,經常用結構數組來表示具有相同數據結構的一個群體。
如一個班的學生檔案,一個車間職工的工資表等。 結構數組的定義
方法和結構變量相似,只需說明它為數組類型即可。例如:    struct stu
    {
        int num;
        char *name;
        char sex;
        float score;
    }boy[5];    定義了一個結構數組boy1,共有5個元素,boy[0]~boy[4]。每
個數組元素都具有struct stu的結構形式。 
    對外部結構數組或靜態結構數組可以作初始化賦值,例如:    struct stu
    {
        int num;
        char *name;
        char sex;
        float score;
    }boy[5]={
             {101,"Li ping","M",45},
             {102,"Zhang ping","M",62.5},
             {103,"He fang","F",92.5},
             {104,"Cheng ling","F",87},
             {105,"Wang ming","M",58};
            }    當對全部元素作初始化賦值時,也可不給出數組長度。
[例7.4]計算學生的平均成績和不及格的人數。struct stu
{
    int num;
    char *name;
    char sex;
    float score;
}boy[5]={
          {101,"Li ping",'M',45},
          {102,"Zhang ping",'M',62.5},
          {103,"He fang",'F',92.5},
          {104,"Cheng ling",'F',87},
          {105,"Wang ming",'M',58},
        };
main()
{
    int i,c=0;
    float ave,s=0;
    for(i=0;i<5;i++)
    {
      s+=boy[i].score;
      if(boy[i].score<60) c+=1;
    }
    printf("s=%f\n",s);
    ave=s/5;
    printf("average=%f\ncount=%d\n",ave,c);
}
    本例程序中定義了一個外部結構數組boy,共5個元素, 并作了
初始化賦值。在main函數中用for語句逐個累加各元素的score 成員
值存于s之中,如score的值小于60(不及格)即計數器C加1, 循環完
畢后計算平均成績,并輸出全班總分,平均分及不及格人數。[例7.5]建立同學通訊錄#include"stdio.h"
#define NUM 3
struct mem
{
    char name[20];
    char phone[10];
};
main()
{
    struct mem man[NUM];
    int i;
    for(i=0;i<NUM;i++)
     {
      printf("input name:\n");
      gets(man[i].name);
      printf("input phone:\n");
      gets(man[i].phone);
     }
    printf("name\t\t\tphone\n\n");
    for(i=0;i<NUM;i++)
      printf("%s\t\t\t%s\n",man[i].name,man[i].phone);
}
    本程序中定義了一個結構mem,它有兩個成員name和phone 用來
表示姓名和電話號碼。在主函數中定義man為具有mem 類型的結構數
組。在for語句中,用gets函數分別輸入各個元素中兩個成員的值。
然后又在for語句中用printf語句輸出各元素中兩個成員值。結構指針變量的說明和使用
    一個指針變量當用來指向一個結構變量時, 稱之為結構指針變
量。結構指針變量中的值是所指向的結構變量的首地址。 通過結構
指針即可訪問該結構變量, 這與數組指針和函數指針的情況是相同
的。結構指針變量說明的一般形式為:    struct 結構名*結構指針變量名      例如,在前面的例7.1中定義了stu這個結構, 如要說明一個指
向stu的指針變量pstu,可寫為:    struct stu *pstu;    當然也可在定義stu結構時同時說明pstu。與前面討論的各類指
針變量相同,結構指針變量也必須要先賦值后才能使用。 
    賦值是把結構變量的首地址賦予該指針變量, 不能把結構名賦
予該指針變量。如果boy是被說明為stu類型的結構變量,則:    pstu=&boy是正確的,而:    pstu=&stu是錯誤的。
    結構名和結構變量是兩個不同的概念,不能混淆。 結構名只能
表示一個結構形式,編譯系統并不對它分配內存空間。 只有當某變
量被說明為這種類型的結構時,才對該變量分配存儲空間。 因此上
面&stu這種寫法是錯誤的,不可能去取一個結構名的首地址。 有了
結構指針變量,就能更方便地訪問結構變量的各個成員。
其訪問的一般形式為:    (*結構指針變量).成員名  或為:
    結構指針變量->成員名  例如:    (*pstu).num或者:    pstu->num
    應該注意(*pstu)兩側的括號不可少, 因為成員符“.”的優先
級高于“*”。如去掉括號寫作*pstu.num則等效于*(pstu.num),這
樣,意義就完全不對了。    下面通過例子來說明結構指針變量的具體說明和使用方法。[例7.6]    struct stu
    {
      int num;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美网站一区二区| 国产成人综合在线观看| 亚洲精品一区二区三区四区高清| 欧美亚洲一区二区在线| 成人免费视频视频| 国产一区二区三区精品视频| 美女高潮久久久| 蜜臀久久99精品久久久画质超高清 | 中文字幕第一区第二区| 欧美成人欧美edvon| 91精品国产色综合久久| 欧美日本韩国一区二区三区视频 | 国产成人免费在线观看不卡| 国产一区二区福利视频| 国产激情视频一区二区在线观看| 国产一区在线视频| 床上的激情91.| 一本一本大道香蕉久在线精品 | 91麻豆精东视频| 色香蕉成人二区免费| 91久久一区二区| 欧美日韩在线电影| 欧美高清视频不卡网| 欧美一级xxx| 精品乱码亚洲一区二区不卡| 精品1区2区在线观看| 国产无遮挡一区二区三区毛片日本| 国产日产精品一区| 亚洲日穴在线视频| 肉丝袜脚交视频一区二区| 男人的j进女人的j一区| 国产剧情一区二区| 99久久综合精品| 欧美日韩国产精品自在自线| 日韩久久久久久| 国产精品久久久久婷婷| 亚洲一区自拍偷拍| 老司机精品视频在线| 高清beeg欧美| 欧美剧情片在线观看| 久久色在线视频| 亚洲图片一区二区| 国产精品99久久久久久宅男| 欧美亚洲一区二区在线| 国产亚洲欧美一区在线观看| 一区二区三区欧美亚洲| 国内久久精品视频| 欧美综合视频在线观看| 欧美精品一区二区三区很污很色的| 欧美国产国产综合| 三级不卡在线观看| 91免费看视频| 国产清纯白嫩初高生在线观看91 | 蜜臀99久久精品久久久久久软件| 顶级嫩模精品视频在线看| 欧美日本不卡视频| 国产精品高潮呻吟久久| 美女久久久精品| 欧美三级日韩在线| 中文字幕制服丝袜一区二区三区| 日韩黄色免费电影| 在线精品亚洲一区二区不卡| 国产三级精品视频| 九一九一国产精品| 欧美精品v日韩精品v韩国精品v| 综合欧美亚洲日本| 高清不卡一区二区在线| 久久综合久久99| 蜜桃av噜噜一区| 91 com成人网| 性欧美大战久久久久久久久| 色婷婷综合五月| 亚洲综合一区二区三区| 91免费国产视频网站| 中文字幕av一区二区三区| 国产精品一区二区久激情瑜伽| 日韩精品一区二区三区四区视频| 日本伊人色综合网| 欧美日韩日本视频| 亚洲一区电影777| 欧美四级电影网| 亚洲电影一区二区| 欧美日韩在线播| 视频在线在亚洲| 欧美一区二区成人6969| 日韩电影在线观看网站| 欧美一区二区三区免费| 日韩不卡一区二区三区| 日韩视频一区二区在线观看| 久久国产综合精品| 久久这里都是精品| 粉嫩一区二区三区性色av| 国产欧美一区二区在线观看| youjizz国产精品| 亚洲欧美日韩精品久久久久| 欧美又粗又大又爽| 偷拍与自拍一区| 精品国产污网站| 成人午夜激情影院| 一区二区三区蜜桃| 制服丝袜中文字幕一区| 久久国产尿小便嘘嘘尿| 国产欧美日本一区二区三区| 色呦呦日韩精品| 青青草97国产精品免费观看| 国产亚洲欧美中文| 91激情五月电影| 九色|91porny| 亚洲视频一区二区在线观看| 欧美精品久久一区二区三区 | 国产日韩一级二级三级| av中文字幕在线不卡| 亚洲成人手机在线| 久久久久久影视| 欧美亚洲国产一区二区三区va| 午夜欧美一区二区三区在线播放| 久久久国产午夜精品| 在线亚洲精品福利网址导航| 捆绑调教一区二区三区| 专区另类欧美日韩| www国产精品av| 欧美日韩一区二区在线观看视频| 精品一区二区三区久久久| 亚洲色图清纯唯美| 2欧美一区二区三区在线观看视频| 99麻豆久久久国产精品免费| 精品亚洲成a人| 亚洲福利视频导航| 中文字幕一区不卡| 日韩精品一区在线| 欧美日韩国产综合草草| 99精品久久久久久| 国产经典欧美精品| 裸体一区二区三区| 一区二区三区四区不卡视频| 国产日韩精品久久久| 精品欧美乱码久久久久久1区2区| 在线视频欧美区| 91在线高清观看| 成人性生交大合| 国产福利一区在线| 免费人成黄页网站在线一区二区| 一区二区三区加勒比av| 亚洲国产精品国自产拍av| 欧美mv日韩mv| 精品久久久久av影院| 日韩欧美一级二级三级久久久| 欧美午夜理伦三级在线观看| 99re热视频精品| 91在线播放网址| 色综合久久天天| 91视频免费播放| 一本色道**综合亚洲精品蜜桃冫| 99精品欧美一区| 91一区二区在线| 欧美美女网站色| 欧美日韩国产精选| 欧美日韩亚州综合| 欧美日韩精品一区二区三区四区 | 精品精品国产高清a毛片牛牛| 91精品国产综合久久小美女| 欧美日韩在线免费视频| 欧美日韩亚洲丝袜制服| 91精品国产欧美一区二区成人| 欧美丰满高潮xxxx喷水动漫| 91精品国产综合久久婷婷香蕉| 日韩一区二区电影在线| 欧美成人乱码一区二区三区| 久久综合九色综合欧美98| 国产丝袜欧美中文另类| 欧美国产禁国产网站cc| 亚洲视频综合在线| 亚洲成av人**亚洲成av**| 日韩激情在线观看| 精品一二三四在线| 岛国一区二区在线观看| 色综合天天综合| 7777精品伊人久久久大香线蕉完整版| 欧美不卡在线视频| 国产视频一区二区三区在线观看| 国产精品对白交换视频| 亚洲最新在线观看| 美女网站一区二区| 国产精品一级片在线观看| 99热在这里有精品免费| 欧美性生交片4| 久久综合九色综合97_久久久| 中文成人av在线| 亚洲777理论| 国产精品一卡二卡在线观看| 欧美婷婷六月丁香综合色| 2023国产一二三区日本精品2022| 国产精品理伦片| 青青草国产成人av片免费| 成人免费视频一区| 日韩一区二区三区四区| 成人免费在线观看入口| 强制捆绑调教一区二区| 91免费观看国产| 久久一留热品黄|