亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲在线成人精品| 日韩成人伦理电影在线观看| 制服.丝袜.亚洲.中文.综合| 婷婷中文字幕一区三区| 欧美国产禁国产网站cc| 亚洲欧美国产高清| 日本不卡的三区四区五区| 日韩国产欧美三级| 国产激情一区二区三区| 91在线视频官网| 欧美一区二区三区思思人| 日韩精品在线一区| 欧美一区二区三区播放老司机| 国产呦萝稀缺另类资源| 亚洲国产综合色| 国产精品久久午夜夜伦鲁鲁| 日韩精品一区二区三区视频播放 | 成人禁用看黄a在线| 日韩一区精品视频| 亚洲一区二区三区国产| 亚洲人妖av一区二区| 亚洲男人的天堂av| 欧美tickling网站挠脚心| 欧美三级视频在线观看| 99re这里都是精品| www.亚洲色图| 一本到高清视频免费精品| 国v精品久久久网| 国产一区二区日韩精品| 国内精品国产成人国产三级粉色| 六月丁香综合在线视频| 日韩电影免费在线看| 亚洲第一在线综合网站| 视频一区在线视频| 麻豆精品视频在线| 久久99九九99精品| 国产宾馆实践打屁股91| 5月丁香婷婷综合| 中文字幕一区免费在线观看| 日本不卡一区二区三区高清视频| 国产成人高清在线| 日韩欧美国产wwwww| 亚洲日本一区二区| 国精产品一区一区三区mba桃花| 欧美日韩一区二区三区免费看| 精品国产三级a在线观看| 一区二区三区在线观看欧美| 韩国成人福利片在线播放| 欧美性色黄大片| 亚洲综合清纯丝袜自拍| 99久久精品一区| 精品99久久久久久| 久久av资源站| 91精品国产综合久久久久| 亚洲男人都懂的| 91免费在线看| 综合久久久久久| 色噜噜久久综合| 亚洲欧美一区二区不卡| youjizz国产精品| 国产精品女同互慰在线看| 国产精品一线二线三线| 亚洲综合成人在线视频| 91色九色蝌蚪| 一区二区三区在线视频免费观看| 色婷婷精品大在线视频| 亚洲精品国产无天堂网2021 | 欧美性大战xxxxx久久久| 亚洲色图欧美在线| 欧美日韩在线播放三区四区| 视频一区欧美日韩| 久久综合久色欧美综合狠狠| 国产福利一区二区三区视频| 五月婷婷激情综合| 欧美高清在线一区| 日韩三级视频中文字幕| 在线看国产一区二区| 精品一区二区三区免费视频| 欧美日韩国产一区| 人妖欧美一区二区| 国产亚洲欧美色| 成人国产在线观看| 亚洲成人免费电影| 精品国产一区二区三区忘忧草| 麻豆一区二区三区| 久久精品这里都是精品| 成人蜜臀av电影| 洋洋av久久久久久久一区| 狠狠色丁香久久婷婷综| 欧美电影免费观看高清完整版 | 国产精品不卡一区| 精品成人一区二区| 久久久无码精品亚洲日韩按摩| 国产精品一级片| 午夜精品福利视频网站 | 欧美www视频| 欧美日韩免费高清一区色橹橹 | 中文字幕在线观看不卡视频| 欧美日韩国产综合草草| 99re热视频这里只精品| 亚洲综合一区二区| 亚洲美女区一区| 一区二区三区四区国产精品| 亚洲人123区| 亚洲第一狼人社区| 日本三级亚洲精品| 精品一二线国产| 国产美女精品人人做人人爽| 国产乱码精品一区二区三区忘忧草 | 精品sm在线观看| 中文在线资源观看网站视频免费不卡 | 国产成人精品综合在线观看 | 97精品久久久久中文字幕| 成人午夜大片免费观看| 午夜视黄欧洲亚洲| 一区二区三区 在线观看视频| 欧美成人高清电影在线| 91精品国产综合久久香蕉麻豆| 菠萝蜜视频在线观看一区| 国产一区在线观看视频| 精品一区二区三区在线播放视频| 亚洲成人激情自拍| 五月综合激情网| 亚洲成在人线在线播放| 亚洲妇女屁股眼交7| 亚洲观看高清完整版在线观看| 一区二区三区四区五区视频在线观看| 中文字幕制服丝袜成人av| 久久综合久久综合九色| 26uuu久久天堂性欧美| 久久网站热最新地址| 久久这里只有精品首页| 欧美极品少妇xxxxⅹ高跟鞋| 欧美国产欧美亚州国产日韩mv天天看完整| 久久久久久久久久久电影| 中文字幕亚洲成人| 亚洲一区日韩精品中文字幕| 香蕉影视欧美成人| 国产一区二区三区免费| 成人综合激情网| 欧美日韩国产大片| 亚洲国产精品t66y| 亚洲午夜一区二区| 国产精品亚洲第一区在线暖暖韩国| 成人免费黄色大片| 欧美三区在线观看| 日本一区二区电影| 人人精品人人爱| 91亚洲大成网污www| 欧美一级一级性生活免费录像| 久久精品亚洲乱码伦伦中文| 悠悠色在线精品| 亚洲3atv精品一区二区三区| 久久国产乱子精品免费女| 色94色欧美sute亚洲线路一ni| 欧美一三区三区四区免费在线看 | 日本福利一区二区| 久久伊99综合婷婷久久伊| 亚洲一卡二卡三卡四卡无卡久久| 精品一区二区三区免费视频| 欧美日韩精品欧美日韩精品一 | 国产清纯美女被跳蛋高潮一区二区久久w | 1024成人网色www| 狠狠色综合日日| 欧美一区二区在线视频| 亚洲男帅同性gay1069| 国产精品911| 国产亚洲欧美色| 国产精品综合二区| 欧美mv日韩mv国产| 久久国产人妖系列| 精品国产乱码久久久久久浪潮| 亚洲成av人片一区二区三区| 在线看日本不卡| 亚洲制服欧美中文字幕中文字幕| 国产不卡免费视频| 久久久久久久久久久久久女国产乱| 免费不卡在线视频| 精品国产一区二区亚洲人成毛片| 久久精品久久久精品美女| 这里只有精品免费| 激情欧美一区二区三区在线观看| 日韩一区二区三区三四区视频在线观看 | 色哟哟精品一区| 丝袜美腿亚洲综合| 欧美精品一区二区三区四区| 国产精品一品二品| 亚洲欧洲制服丝袜| 欧美日韩国产另类一区| 韩国毛片一区二区三区| 国产精品久久久久久久久快鸭 | 欧美性色欧美a在线播放| 日韩高清不卡一区二区| 久久久久久久久久美女| 99精品国产热久久91蜜凸| 亚洲一区二区三区四区在线| 欧美一区二区三区性视频| 成人午夜在线免费| 日韩精品国产精品| 中国色在线观看另类|