機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
結(jié)構(gòu)與聯(lián)合
結(jié)構(gòu)與聯(lián)合
 更新時(shí)間:2008-8-19 14:07:17  點(diǎn)擊數(shù):572
【字體: 字體顏色
 
結(jié)構(gòu)變量的賦值
前面已經(jīng)介紹,結(jié)構(gòu)變量的賦值就是給各成員賦值?捎幂斎胝Z(yǔ)句或賦值語(yǔ)句來(lái)完成。
[例7.1]給結(jié)構(gòu)變量賦值并輸出其值。
[code:1:8d8ee8c82c]
 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);
 }
    本程序中用賦值語(yǔ)句給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)變量, 則可對(duì)它作初始化賦值。對(duì)局部或自動(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);
 }
本例中,boy2,boy1均被定義為外部結(jié)構(gòu)變量,并對(duì)boy1作了初始化賦值。在main函數(shù)中,把boy1的值整體賦予boy2, 然后用兩個(gè)printf語(yǔ)句輸出boy2各成員的值。
[例7.3]靜態(tài)結(jié)構(gòu)變量初始化。
[code:1:8d8ee8c82c]
 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);
 }
本例是把boy1,boy2都定義為靜態(tài)局部的結(jié)構(gòu)變量, 同樣可以作初始化賦值。  

結(jié)構(gòu)數(shù)組
數(shù)組的元素也可以是結(jié)構(gòu)類(lèi)型的。 因此可以構(gòu)成結(jié)構(gòu)型數(shù)組。結(jié)構(gòu)數(shù)組的每一個(gè)元素都是具有相同結(jié)構(gòu)類(lèi)型的下標(biāo)結(jié)構(gòu)變量。 在實(shí)際應(yīng)用中,經(jīng)常用結(jié)構(gòu)數(shù)組來(lái)表示具有相同數(shù)據(jù)結(jié)構(gòu)的一個(gè)群體。如一個(gè)班的學(xué)生檔案,一個(gè)車(chē)間職工的工資表等。 
結(jié)構(gòu)數(shù)組的定義方法和結(jié)構(gòu)變量相似,只需說(shuō)明它為數(shù)組類(lèi)型即可。例如: 
 struct stu
 {
     int num;
     char *name;
     char sex;
     float score;
 }boy[5]; 
定義了一個(gè)結(jié)構(gòu)數(shù)組boy1,共有5個(gè)元素,boy[0]~boy[4]。每個(gè)數(shù)組元素都具有struct stu的結(jié)構(gòu)形式。 對(duì)外部結(jié)構(gòu)數(shù)組或靜態(tài)結(jié)構(gòu)數(shù)組可以作初始化賦值,例如: 
 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};
 }
當(dāng)對(duì)全部元素作初始化賦值時(shí),也可不給出數(shù)組長(zhǎng)度。
[例7.4]計(jì)算學(xué)生的平均成績(jī)和不及格的人數(shù)。
[code:1:8d8ee8c82c]
 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);
 }
       本例程序中定義了一個(gè)外部結(jié)構(gòu)數(shù)組boy,共5個(gè)元素, 并作了初始化賦值。在main函數(shù)中用for語(yǔ)句逐個(gè)累加各元素的score 成員值存于s之中,如score的值小于60(不及格)即計(jì)數(shù)器C加1, 循環(huán)完畢后計(jì)算平均成績(jī),并輸出全班總分,平均分及不及格人數(shù)。
  • 上一篇: 可編程模擬器件原理與開(kāi)發(fā)
  • 下一篇: 與蜂共舞—ZigBee技術(shù)一瞥
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1