久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      結(jié)構(gòu)體類型變量的定義和引用

      前面的課程我們學(xué)習(xí)了一些簡(jiǎn)單數(shù)據(jù)類型(整型、實(shí)型、字符型)的定義和應(yīng)用,還學(xué)習(xí)了數(shù)組(一維、二維)的定義和應(yīng)用,這些數(shù)據(jù)類型的特點(diǎn)是:當(dāng)定義某一特定數(shù)據(jù)類型,就限定該類型變量的存儲(chǔ)特性和取值范圍。對(duì)簡(jiǎn)單數(shù)據(jù)類型來(lái)說(shuō),既可以定義單個(gè)的變量,
      也可以定義數(shù)組。而數(shù)組的全部元素都具有相同的數(shù)據(jù)類型,或者說(shuō)是相同數(shù)據(jù)類型的一個(gè)集合。
      在日常生活中,我們常會(huì)遇到一些需要填寫的登記表,如住宿表、成績(jī)表、通訊地址等。
      在這些表中,填寫的數(shù)據(jù)是不能用同一種數(shù)據(jù)類型描述的,在住宿表中我們通常會(huì)登記上姓名、性別、身份證號(hào)碼等項(xiàng)目;在通訊地址表中我們會(huì)寫下姓名、郵編、郵箱地址、電話號(hào)碼、E – m a i l等項(xiàng)目。這些表中集合了各種數(shù)據(jù),無(wú)法用前面學(xué)過(guò)的任一種數(shù)據(jù)類型完全描述,因此C引入一種能集中不同數(shù)據(jù)類型于一體的數(shù)據(jù)類型—結(jié)構(gòu)體類型。結(jié)構(gòu)體類型的變量可以擁有不同數(shù)據(jù)類型的成員,是不同數(shù)據(jù)類型成員的集合。
      在上面描述的各種登記表中,讓我們仔細(xì)觀察一下住宿表、成績(jī)表、通訊地址等。
      住宿表由下面的項(xiàng)目構(gòu)成:
      結(jié)構(gòu)體類型變量的定義和引用
      這些登記表用C提供的結(jié)構(gòu)體類型描述如下:
      住宿表:
      struct accommod
      {
      char name[20]; / *姓名* /
      char sex; / *性別* /
      char job[40]; / *職業(yè)* /
      int age; / *年齡* /
      long number; / *身份證號(hào)碼* /
      } ;
      成績(jī)表:
      struct score
      {
      char grade[20]; / * 班級(jí)* /
      long number; / * 學(xué)號(hào)* /
      char name[20]; / *姓名* /
      float os; / *操作系統(tǒng)* /
      float datastru; / * 數(shù)據(jù)結(jié)構(gòu)* /
      float compnet; / * 計(jì)算機(jī)網(wǎng)絡(luò)* /
      } ;
      通訊地址表:
      struct addr
      {
      char name[20];
      char department[30];/ * 部門* /
      char address[30]; / *住址* /
      long box; / * 郵編* /
      long phone; / * 電話號(hào)碼* /
      char email[30]; / * E m a i l * /
      };
      這一系列對(duì)不同登記表的數(shù)據(jù)結(jié)構(gòu)的描述類型稱為結(jié)構(gòu)體類型。由于不同的問(wèn)題有不同的數(shù)據(jù)成員,也就是說(shuō)有不同描述的結(jié)構(gòu)體類型。我們也可以理解為結(jié)構(gòu)體類型根據(jù)所針對(duì)的問(wèn)題其成員是不同的,可以有任意多的結(jié)構(gòu)體類型描述。
      下面給出C對(duì)結(jié)構(gòu)體類型的定義形式:
      struct 結(jié)構(gòu)體名
      {
      成員項(xiàng)表列
      };
      有了結(jié)構(gòu)體類型,我們就可以定義結(jié)構(gòu)體類型變量,以對(duì)不同變量的各成員進(jìn)行引用。
      7.1.1 結(jié)構(gòu)體類型變量的定義
      結(jié)構(gòu)體類型變量的定義與其它類型的變量的定義是一樣的,但由于結(jié)構(gòu)體類型需要針對(duì)問(wèn)題事先自行定義,所以結(jié)構(gòu)體類型變量的定義形式就增加了靈活性,共計(jì)有三種形式,分別介紹如下:
      1) 先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體類型變量:
      struct stu / *定義學(xué)生結(jié)構(gòu)體類型* /
      {
      char name[20]; / * 學(xué)生姓名* /
      char sex; / * 性別* /
      long num; / *學(xué)號(hào)* /
      float score[3]; / * 三科考試成績(jī)* /
      };
      struct stu student1,student2;/ * 定義結(jié)構(gòu)體類型變量* /
      struct stu student3,student4;
      用此結(jié)構(gòu)體類型,可以定義更多的該結(jié)構(gòu)體類型變量。
      2 ) 定義結(jié)構(gòu)體類型同時(shí)定義結(jié)構(gòu)體類型變量:
      struct data
      {
      int day;
      int month;
      int year;
      } time1,time2;
      也可以再定義如下變量:
      struct data time3,time4;
      用此結(jié)構(gòu)體類型,同樣可以定義更多的該結(jié)構(gòu)體類型變量。
      3) 直接定義結(jié)構(gòu)體類型變量:
      struct
      {
      char name[20]; / *學(xué)生姓名* /
      char sex; / *性別* /
      long num; / *學(xué)號(hào)* /
      float score[3]; / *三科考試成績(jī)* /
      } person1,person2; / *定義該結(jié)構(gòu)體類型變量* /
      該定義方法由于無(wú)法記錄該結(jié)構(gòu)體類型,所以除直接定義外,不能再定義該結(jié)構(gòu)體類型變量。

      7.1.2 結(jié)構(gòu)體類型變量的引用
      結(jié)構(gòu)體類型變量的定義和引用
      學(xué)習(xí)了怎樣定義結(jié)構(gòu)體類型和結(jié)構(gòu)體類型變量,怎樣正確地引用該結(jié)構(gòu)體類型變量的成員呢?C 規(guī)定引用的形式為:
      <結(jié)構(gòu)體類型變量名> . <成員名>
      若我們定義的結(jié)構(gòu)體類型及變量如下:
      struct data
      {
      int day;
      int month;
      int year;
      } time1,time2;
      則變量time1和time2各成員的引用形式為:time1.day、
      time1.month、time1.year及time2.day、time2.month、
      time2.year,如圖7-1所示。
      其結(jié)構(gòu)體類型變量的各成員與相應(yīng)的簡(jiǎn)單類型變量使
      用方法完全相同。
      7.1.3結(jié)構(gòu)體類型變量的初始化
      由于結(jié)構(gòu)體類型變量匯集了各類不同數(shù)據(jù)類型的成員,所以結(jié)構(gòu)體類型變量的初始化就略顯復(fù)雜。
      結(jié)構(gòu)體類型變量的定義和初始化為:
      struct stu / *定義學(xué)生結(jié)構(gòu)體類型* /
      {
      char name[20]; / * 學(xué)生姓名* /
      char sex; / * 性別* /
      long num; / *學(xué)號(hào)* /
      float score[3]; / * 三科考試成績(jī)* /
      };
      struct stu student={“liping”,’f’,970541,98.5,97.4,95};
      結(jié)構(gòu)體類型變量的定義和引用
      我們也可以通過(guò)C提供的輸入輸出函數(shù)完成對(duì)結(jié)構(gòu)體類型變量成員的輸入輸出。由于結(jié)構(gòu)體類型變量成員的數(shù)據(jù)類型通常是不一樣的,所以要將結(jié)構(gòu)體類型變量成員以字符串的形式輸入,利用C的類型轉(zhuǎn)換函數(shù)將其轉(zhuǎn)換為所需類型。類型轉(zhuǎn)換的函數(shù)是:
      int atoi(char *str);轉(zhuǎn)換str所指向的字符串為整型,其函數(shù)的返回值為整型。
      double atof(char*str);轉(zhuǎn)換str所指向的字符串為實(shí)型,其函數(shù)的返回值為雙精度的實(shí)型。
      long atol(char*str);轉(zhuǎn)換str所指向的字符串為長(zhǎng)整型,其函數(shù)的返回值為長(zhǎng)整型。
      使用上述函數(shù),要包含頭文件”stdlib.h”。
      對(duì)上述的結(jié)構(gòu)體類型變量成員輸入采用的一般形式:
      char temp[20];
      gets(student.name);/*輸入姓名*/
      student.sex=getchar();/*輸入性別*/
      gets(temp);/*輸入學(xué)號(hào)*/
      student.num=atol(temp);/*轉(zhuǎn)換為長(zhǎng)整型*/
      for(i=0;i<3;i++)/*輸入三科成績(jī)*/
      {
      gets(temp);
      student.score[i]=atoi(temp);
      }
      對(duì)該結(jié)構(gòu)體類型變量成員的輸出也必須采用各成員獨(dú)立輸出,而不能將結(jié)構(gòu)體類型變量以整體的形式輸入輸出。
      C允許針對(duì)具體問(wèn)題定義各種各樣的結(jié)構(gòu)體類型,甚至是嵌套的結(jié)構(gòu)體類型。
      structdata
      {
      intday;
      上述對(duì)結(jié)構(gòu)體類型變量的三種定義形式均可在定義時(shí)初始化。結(jié)構(gòu)體類型變量完成初始化后,即各成員的值分別為:student.name=”liping”、student.sex=’f’、student.num=970541、
      student.score[0]=98.5、student.score[1]=97.4、student.score[2]=95。其存儲(chǔ)在內(nèi)存的情況如圖7-2所示。
      int mouth;
      int year;
      } ;
      struct stu
      {
      char name[20];
      struct data birthday; 出/*生年月,嵌套的結(jié)構(gòu)體類型*/
      long num;
      } person;
      該結(jié)構(gòu)體類型變量成員的引用形式: person.name 、person.birthday.day、person. birthday.month、person. birthday. y e a r、person.num 。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)