首頁考試吧論壇Exam8視線考試商城網(wǎng)絡(luò)課程模擬考試考友錄實(shí)用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓(xùn) 自學(xué)考試 成人高考
四 六 級(jí)
GRE考試
攻碩英語
零起點(diǎn)日語
職稱英語
口譯筆譯
申碩英語
零起點(diǎn)韓語
商務(wù)英語
日語等級(jí)
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點(diǎn)英語
托?荚
托業(yè)考試
零起點(diǎn)法語
雅思考試
成人英語三級(jí)
零起點(diǎn)德語
等級(jí)考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價(jià)格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會(huì)工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會(huì)計(jì)職稱
法律顧問
ACCA考試
注冊會(huì)計(jì)師
資產(chǎn)評(píng)估師
審計(jì)師考試
高級(jí)會(huì)計(jì)師
注冊稅務(wù)師
國際內(nèi)審師
理財(cái)規(guī)劃師
美國注冊會(huì)計(jì)師
一級(jí)建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級(jí)建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
造價(jià)員考試
注冊計(jì)量師
環(huán)保工程師
化工工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評(píng)價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評(píng)價(jià)師
土地登記代理人
繽紛校園 實(shí)用文檔 英語學(xué)習(xí) 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項(xiàng)輔導(dǎo)
軟件水平考試交流互動(dòng)
軟件水平考試交流互動(dòng)
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員資料 > 正文

C語言初學(xué)者入門知識(shí)之結(jié)構(gòu)體1

  3. 直接說明結(jié)構(gòu)變量。例如:

  struct

  {

  int num;

  char name[20];

  char sex;

  float score;

  }boy1,boy2;

  第三種方法與第二種方法的區(qū)別在于第三種方法中省去了結(jié)構(gòu)名,而直接給出結(jié)構(gòu)變量。說明了boy1,boy2變量為stu類型后,即可向這兩個(gè)變量中的各個(gè)成員賦值。在上述stu結(jié)構(gòu)定義中,所有的成員都是基本數(shù)據(jù)類型或數(shù)組類型。成員也可以又是一個(gè)結(jié)構(gòu), 即構(gòu)成了嵌套的結(jié)構(gòu)。例如:

  struct date{

  int month;

  int day;

  int year;

  }

  struct{

  int num;

  char name[20];

  char sex;

  struct date birthday;

  float score;

  }boy1,boy2;

  首先定義一個(gè)結(jié)構(gòu)date,由month(月)、day(日)、year(年) 三個(gè)成員組成。 在定義并說明變量 boy1 和 boy2 時(shí),其中的成員birthday被說明為data結(jié)構(gòu)類型。成員名可與程序中其它變量同名,互不干擾。結(jié)構(gòu)變量成員的表示方法在程序中使用結(jié)構(gòu)變量時(shí), 往往不把它作為一個(gè)整體來使用。

  在ANSI C中除了允許具有相同類型的結(jié)構(gòu)變量相互賦值以外, 一般對結(jié)構(gòu)變量的使用,包括賦值、輸入、輸出、 運(yùn)算等都是通過結(jié)構(gòu)變量的成員來實(shí)現(xiàn)的。

  表示結(jié)構(gòu)變量成員的一般形式是:結(jié)構(gòu)變量名。成員名 例如:boy1.num 即第一個(gè)人的學(xué)號(hào) boy2.sex 即第二個(gè)人的性別如果成員本身又是一個(gè)結(jié)構(gòu)則必須逐級(jí)找到最低級(jí)的成員才能使用。例如:boy1.birthday.month 即第一個(gè)人出生的月份成員可以在程序中單獨(dú)使用,與普通變量完全相同。

  結(jié)構(gòu)變量的賦值

  前面已經(jīng)介紹,結(jié)構(gòu)變量的賦值就是給各成員賦值。 可用輸入語句或賦值語句來完成。

  [例7.1]給結(jié)構(gòu)變量賦值并輸出其值。

  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兩個(gè)成員賦值,name是一個(gè)字符串指針變量。用scanf函數(shù)動(dòng)態(tài)地輸入sex和score成員值,然后把boy1的所有成員的值整體賦予boy2。最后分別輸出boy2的各個(gè)成員值。本例表示了結(jié)構(gòu)變量的賦值、輸入和輸出的方法。

  結(jié)構(gòu)變量的初始化

  如果結(jié)構(gòu)變量是全局變量或?yàn)殪o態(tài)變量, 則可對它作初始化賦值。對局部或自動(dòng)結(jié)構(gòu)變量不能作初始化賦值。

  [例7.2]外部結(jié)構(gòu)變量初始化。

  struct stu /*定義結(jié)構(gòu)*/

  {

  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均被定義為外部結(jié)構(gòu)變量,并對boy1作了初始化賦值。在main函數(shù)中,把boy1的值整體賦予boy2,然后用兩個(gè)printf語句輸出boy2各成員的值。

  [例7.3]靜態(tài)結(jié)構(gòu)變量初始化。

  main()

  {

  static struct stu /*定義靜態(tài)結(jié)構(gòu)變量*/

  {

  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都定義為靜態(tài)局部的結(jié)構(gòu)變量, 同樣可以作初始化賦值。

  相關(guān)推薦:

  2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計(jì)劃

  2012年軟件水平考試網(wǎng)絡(luò)工程師章節(jié)筆記講義匯總

  2012年上半年軟件水平考試成績查詢匯總

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。