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

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

?? tc13.dat

?? 指令字典2005里面可以方便的查找一些函數
?? DAT
?? 第 1 頁 / 共 2 頁
字號:
第10章 結構與鏈表

為將不同數據類型、但相互關聯的一組數據,組合成一個有機整體使用,C語言提供一種稱為“結構”的數據結構.

10.1  結構類型與結構變量的定義
10.2  結構變量的引用與初始化
10.3  結構數組

10.4  指向結構類型數據的指針

10.5  鏈表處理──結構指針的應用

10.6  共用型和枚舉型

10.7  定義已有類型的別名

10.1  結構類型與結構變量的定義

C語言中的結構類型,相當于其它高級語言中的“記錄”類型.

10.1.1  結構類型定義

struct  結構類型名      /* struct是結構類型關鍵字*/
             {數據類型  數據項1;
               數據類型  數據項2;
                   ……              ……
               數據類型  數據項n;
             };                  /* 此行分號不能少!*/
        

[案例10.1] 定義一個反映學生基本情況的結構類型,用以存儲學生的相關信息.
/*案例代碼文件名:AL10_1.C.*/
/*功能:定義一個反映學生基本情況的結構類型*/

struct  date      /*日期結構類型:由年、月、日三項組成*/

       {int year;  

        int month;

        int day;

       };

struct  std_info /*學生信息結構類型:由學號、姓名、性別和生日共4項組成*/

       {char  no[7]; 

        char  name[9]; 

        char  sex[3]; 

        struct date birthday;

      }; 

 struct  score    /*成績結構類型:由學號和三門成績共4項組成*/

       {char  no[7]; 

         int  score1;

         int  score2;

         int  score3;

       }; 

(1)“結構類型名”和“數據項”的命名規則,與變量名相同.

(2)數據類型相同的數據項,既可逐個、逐行分別定義,也可合并成一行定義.

 例如,本案例代碼中的日期結構類型,也可改為如下形式:

    struct  date 

         {int  year, month, day;

          };

(3)結構類型中的數據項,既可以是基本數據類型,也允許是另一個已經定義的結構類型.

 例如,本案例代碼中的結構類型std_info,其數據項“birthday”就是一個已經定義的日期結構類型date.

(4)本書將1個數據項稱為結構類型的1個成員(或分量).

10.1.2  結構變量定義

用戶自己定義的結構類型,與系統定義的標準類型(int、char等)一樣,可用來定義結構變量的類型.

 1.定義結構變量的方法,可概括為兩種:

(1)間接定義法──先定義結構類型、再定義結構變量

例如,利用[案例10.1]中定義的學生信息結構類型std_info,定義了一個相應的結構變量student:

    struct  std_info  student;

結構變量student:擁有結構類型的全部成員,其中birthday成員是一個日期結構類型,它又由3個成員構成.

注意:使用間接定義法定義結構變量時,必須同時指定結構類型名.

(2)直接定義法──在定義結構類型的同時,定義結構變量

例如,結構變量student的定義可以改為如下形式:

struct  std_info

    {……

    } student;

同時定義結構類型及其結構變量的一般格式如下:

        struct  [結構類型名]

          { ……

          } 結構變量表;

2.說明

(1)結構類型與結構變量是兩個不同的概念,其區別如同int類型與int型變量的區別一樣.

(2)結構類型中的成員名,可以與程序中的變量同名,它們代表不同的對象,互不干擾.

10.2  結構變量的引用與初始化

       [案例10.2] 利用[案例10.1]中定義的結構類型struct  std_info,定義一個結構變量student,用于存儲和顯示一個學生的基本情況.


/*案例代碼文件名:AL10_2.C*/
#include"struct.h"
/*定義并初始化一個外部結構變量student */
struct  std_info  student={"000102","張三","男",{1980,9,20}};
main()
     { printf("No: %s\n",student.no);
        printf("Name: %s\n",student.name);
        printf("Sex: %s\n",student.sex);
        printf("Birthday: %d-%d-%d\n",student.birthday.year,

           student.birthday.month, student.birthday.day);

}
                                               

程序運行結果:

No: 000102

Name: 張三

Sex: 男

Birthday:1980-9-20

1.結構變量的引用規則

對于結構變量,要通過成員運算符“.”,逐個訪問其成員,且訪問的格式為:

結構變量.成員                 /*其中的“.”是成員運算符*/

例如,案例中的student.no,引用結構變量student中的no成員;student.name引用結構變量student中的name成員,等等.

如果某成員本身又是一個結構類型,則只能通過多級的分量運算,對最低一級的成員進行引用.

此時的引用格式擴展為:

        結構變量.成員.子成員.….最低1級子成員

例如,引用結構變量student中的birthday成員的格式分別為:

student.birthday.year

student.birthday.month

student.birthday.day

(1)對最低一級成員,可像同類型的普通變量一樣,進行相應的各種運算.

(2)既可引用結構變量成員的地址,也可引用結構變量的地址.

例如,&student.name ,&student .

2.結構變量的初始化

結構變量初始化的格式,與一維數組相似:

        結構變量={初值表}

不同的是:如果某成員本身又是結構類型,則該成員的初值為一個初值表.

例如,[案例10.2]中的student={"000102", "張三", "男", {1980,9,20}}.

注意:初值的數據類型,應與結構變量中相應成員所要求的一致,否則會出錯.

10.3     結構數組

結構數組的每一個元素,都是結構類型數據,均包含結構類型的所有成員.

[案例10.3] 利用[案例10.1]中定義的結構類型struct  std_info,定義一個結構數組student,用于存儲和顯示三個學生的基本情況.


/*案例代碼文件名:AL10_3.C*/
#include"struct.h"
/*定義并初始化一個外部結構數組student[3] */
struct  std_info  student[3]={{“000102”,“張三”,“男”,{1980,9,20}},
                                               {“000105”,“李四”,“男”,{1980,8,15}},
                                               {“000112”,“王五”,“女”,{1980,3,10}}  };

/*主函數main()*/

main()

     { int i;

        /*打印表頭: "  "表示1個空格字符*/

        printf("No.    Name     Sex Birthday\n");    

        /*輸出三個學生的基本情況*/

        for(i=0; i<3; i++)

             { printf("%-7s",student[i].no);

                printf("%-9s",student[i].name);

                printf("%-4s",student[i].sex);

                printf("%d-%d-%d\n",student[i].birthday.year, 

                           student[i].birthday.month, student[i].birthday.day);

             }

        }

                             [程序演示]

程序運行結果:

No.        Name     Sex  Birthday

000102  張三      男    1980-9-20

000105  李四      男    1980-8-15

000112  王五      女    1980-3-10

 與結構變量的定義相似,結構數組的定義也分直接定義和間接定義兩種方法,只需說明為數組即可.

 與普通數組一樣,結構數組也可在定義時進行初始化.初始化的格式為:

結構數組[n]={{初值表1},{初值表2},...,{初值表n}}

例如,本案例中的結構數組student[3]. 

10.4  指向結構類型數據的指針

  結構變量在內存中的起始地址稱為結構變量的指針.

10.4.1  指向結構變量的指針
       [案例10.4] 使用指向結構變量的指針來訪問結構變量的各個成員.
/*案例代碼文件名:AL10_4.C*/
#include“struct.h”
struct  std_info  student={“000102”,“張三”,“男”,{1980,9,20}};
main()

    { struct  std_info  *p_std=&student; 

       printf("No: %s\n", p_std->no);

       printf("Name: %s\n", p_std->name);

       printf("Sex: %s\n", p_std->sex);

       printf("Birthday: %d-%d-%d\n", p_std->birthday.year,

                  p_std->birthday.month, p_std->birthday.day);

    }                                                      [程序演示]

通過指向結構變量的指針來訪問結構變量的成員,與直接使用結構變量的效果一樣.一般地說,如果指針變量pointer已指向結構變量var,則以下三種形式等價:

(1)var.成員

(2)pointer->成員

(3)(*pointer).成員   /* “*pointer”外面的括號不能省!*/

注意:在格式(1)中,分量運算符左側的運算對象,只能是結構變量,;而在格式(2)中,指向運算符左側的運算對象,只能是指向結構變量(或結構數組)的指針變量,否則都出錯.

思考題:如果要求從鍵盤上輸入結構變量student的各成員數據,如何修改程序?

10.4.2  指向結構數組的指針

[案例10.5] 使用指向結構數組的指針來訪問結構數組.

/*案例代碼文件名:AL10_5.C*/

#include"struct.h"

/*定義并初始化一個外部結構數組student */

struct  std_info  student[3]={{"000102","張三","男",{1980,5,20}},

                                               {"000105","李四","男",{1980,8,15}},

                                               {“000112”,“王五”,“女”,{1980,3,10}} };

main()

   { struct  std_info  *p_std=student;          

      int i=0;

      /*打印表頭*/

      printf("No.    Name     Sex Birthday\n");

/*輸出結構數組內容*/

for( ;  i<3;  i++, p_std++)

   { printf("%-7s%-9s%-4s",  p_std->no,  p_std->name,  p_std->sex);

      printf("%4d-%2d-%2d\n", p_std->birthday.year,

                  p_std->birthday.month,  p_std->birthday.day);

    }

}                                                     [程序演示]

如果指針變量p已指向某結構數組,則p+1指向結構數組的下一個元素,而不是當前元素的下一個成員.

另外,如果指針變量p已經指向一個結構變量(或結構數組),就不能再使之指向結構變量(或結構數組元素)的某一成員.

10.4.3  指向結構數據的指針作函數參數

[案例10.6] 用函數調用方式,改寫[案例10.5]:編寫一個專門的顯示函數display(),通過主函數調用來實現顯示.

/*案例代碼文件名:AL10_6.C*/

#include"struct.h"

/*定義并初始化一個外部結構數組student */

struct  std_info  student[3]={{"000102","張三","男",{1980,5,20}},

                                               {"000105","李四","男",{1980,8,15}},

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲精品成人久久奇米网| 亚洲欧美日韩精品久久久久| 91网页版在线| 美女性感视频久久| 亚洲欧美另类久久久精品| 制服丝袜成人动漫| caoporm超碰国产精品| 六月婷婷色综合| 香蕉成人伊视频在线观看| 中文字幕中文字幕一区二区| 日韩精品一区二区三区四区视频 | 欧美一区二区三区精品| av一二三不卡影片| 国产一区二区影院| 五月婷婷综合激情| 亚洲午夜免费电影| 最新欧美精品一区二区三区| 久久久久国产成人精品亚洲午夜| 欧美视频一区二区三区在线观看 | 成人免费毛片aaaaa**| 精品亚洲成a人| 日韩激情视频网站| 亚洲综合偷拍欧美一区色| 最新不卡av在线| 国产清纯美女被跳蛋高潮一区二区久久w | 91精品午夜视频| 欧美视频一区二区三区四区 | 成人国产精品免费网站| 国产一区视频网站| 捆绑调教美女网站视频一区| 日本欧美久久久久免费播放网| 亚洲一区二区影院| 亚洲国产日韩精品| 亚洲一区在线观看免费| 亚洲蜜桃精久久久久久久| 亚洲乱码国产乱码精品精98午夜 | 最新国产の精品合集bt伙计| 国产精品麻豆欧美日韩ww| 国产日韩精品一区二区浪潮av| 精品国产免费久久| 国产午夜精品久久久久久免费视| 26uuu亚洲综合色| 久久久国产精华| 国产喂奶挤奶一区二区三区| 国产日韩欧美一区二区三区乱码 | 亚洲理论在线观看| 亚洲日本欧美天堂| 一区二区三区毛片| 五月婷婷久久综合| 久久精品国产澳门| 久久99精品国产.久久久久| 九九精品一区二区| 国内精品伊人久久久久av一坑 | 亚洲一区二区偷拍精品| 亚洲18女电影在线观看| 视频在线观看91| 久久精品国产一区二区| 国产丶欧美丶日本不卡视频| 成人午夜av在线| 在线观看日韩av先锋影音电影院| 欧美中文一区二区三区| 5858s免费视频成人| 精品国产乱码久久久久久久久 | 3atv一区二区三区| 精品国产电影一区二区| 国产清纯白嫩初高生在线观看91| 一色桃子久久精品亚洲| 亚洲一区二区三区国产| 青草av.久久免费一区| 国产丶欧美丶日本不卡视频| 一本久道中文字幕精品亚洲嫩| 欧美日韩一区 二区 三区 久久精品| 91麻豆精品国产91久久久久| 国产日韩欧美制服另类| 亚洲影视在线观看| 国产毛片精品一区| 一本大道av一区二区在线播放 | 一区二区三区鲁丝不卡| 另类的小说在线视频另类成人小视频在线 | 奇米色一区二区| 波多野结衣视频一区| 欧美剧情片在线观看| 国产亚洲精品bt天堂精选| 一区二区三区在线视频免费| 日本大胆欧美人术艺术动态| 国产成人综合在线观看| 欧美伦理电影网| 日韩理论片在线| 国产在线乱码一区二区三区| 在线观看国产91| 国产三级久久久| 免费亚洲电影在线| 色综合久久中文综合久久97| 久久欧美中文字幕| 亚洲一区电影777| 99久久精品免费看国产免费软件| 777午夜精品视频在线播放| 国产精品久久免费看| 麻豆国产91在线播放| 欧美亚男人的天堂| 国产精品成人免费精品自在线观看| 免费成人你懂的| 欧美亚洲另类激情小说| 国产精品无遮挡| 老汉av免费一区二区三区| 欧美性猛交一区二区三区精品 | 亚洲国产日韩一区二区| 国产v综合v亚洲欧| 精品1区2区在线观看| 午夜精品国产更新| 色婷婷综合久久久中文一区二区| 国产日韩欧美高清| 韩国女主播一区| 欧美日韩第一区日日骚| 亚洲免费观看高清完整版在线观看 | 国产精品麻豆一区二区| 国产曰批免费观看久久久| 日韩视频永久免费| 午夜亚洲国产au精品一区二区| 在线亚洲一区二区| 国产精品久久久久久户外露出| 国产高清不卡二三区| 久久综合九色综合97婷婷| 免费精品视频最新在线| 在线播放91灌醉迷j高跟美女| 洋洋成人永久网站入口| 97久久超碰国产精品电影| 中文字幕一区二区三区蜜月| 东方欧美亚洲色图在线| 久久久久久久一区| 精品在线一区二区三区| 91精品国产综合久久精品性色| 午夜精品久久久| 69成人精品免费视频| 天堂va蜜桃一区二区三区| 欧美日韩一区二区三区不卡| 亚洲综合图片区| 欧美日本韩国一区二区三区视频| 亚洲一级在线观看| 欧美日韩一二三| 日本成人在线视频网站| 欧美videos大乳护士334| 久草这里只有精品视频| 国产亚洲综合性久久久影院| 成人性生交大合| 成人欧美一区二区三区小说| 99久久国产免费看| 玉足女爽爽91| 欧美肥妇free| 狠狠色伊人亚洲综合成人| 久久久精品免费网站| www.成人在线| 一个色妞综合视频在线观看| 欧美日韩国产精品自在自线| 麻豆成人久久精品二区三区红 | 天天影视色香欲综合网老头| 欧美一区二区性放荡片| 狠狠色丁香婷婷综合| 国产精品美女久久久久久久 | 久久精品欧美一区二区三区麻豆| 丁香婷婷综合色啪| 亚洲免费成人av| 日韩一区二区中文字幕| 国产精品影视天天线| 亚洲人成网站影音先锋播放| 欧美精品日日鲁夜夜添| 国产iv一区二区三区| 亚洲电影在线免费观看| 欧美成人伊人久久综合网| 国产成人午夜99999| 一区二区三区四区在线播放| 91精品国产免费| 国产成人av网站| 亚洲成av人片在线观看| 精品国产第一区二区三区观看体验| av一区二区不卡| 麻豆国产一区二区| 亚洲女厕所小便bbb| 精品日韩欧美一区二区| 色综合 综合色| 国产一区在线精品| 亚洲一区二区三区不卡国产欧美| 亚洲精品一线二线三线| 日本韩国视频一区二区| 国产一区二区看久久| 亚洲国产视频一区| 中文字幕乱码日本亚洲一区二区 | 91性感美女视频| 蜜臀a∨国产成人精品| 国产精品乱码人人做人人爱| 91精品一区二区三区在线观看| 成人禁用看黄a在线| 久久精品国内一区二区三区| 亚洲精品乱码久久久久久| 欧美精品一区二区三区四区| 欧美午夜免费电影| 91一区二区三区在线观看| 国产精品18久久久久久久久久久久| 亚洲图片有声小说| 国产精品麻豆99久久久久久|