久久久国产精品秘人口麻豆|永久免费AV无语国产|人成电影免费中文字幕|久久AV嫩草影院2

    1. <dfn id="yitbn"><samp id="yitbn"><progress id="yitbn"></progress></samp></dfn>

          <div id="yitbn"></div>

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

            二級C輔導(dǎo)教程及考點分析:第五章 函數(shù)

             

                二、數(shù)組名作為函數(shù)參數(shù)

                用數(shù)組名作函數(shù)參數(shù)與用數(shù)組元素作實參有幾點不同:
                1. 用數(shù)組元素作實參時,只要數(shù)組類型和函數(shù)的形參變量的類型一致,那么作為下標變量的數(shù)組元素的類型也和函數(shù)形參變量的類型是一致的。因此, 并不要求函數(shù)的形參也是下標變量。 換句話說,對數(shù)組元素的處理是按普通變量對待的。用數(shù)組名作函數(shù)參數(shù)時, 則要求形參和相對應(yīng)的實參都必須是類型相同的數(shù)組,都必須有明確的數(shù)組說明。當形參和實參二者不一致時,即會發(fā)生錯誤。

                2. 在普通變量或下標變量作函數(shù)參數(shù)時,形參變量和實參變量是由編譯系統(tǒng)分配的兩個不同的內(nèi)存單元。在函數(shù)調(diào)用時發(fā)生的值傳送是把實參變量的值賦予形參變量。在用數(shù)組名作函數(shù)參數(shù)時,不是進行值的傳送,即不是把實參數(shù)組的每一個元素的值都賦予形參數(shù)組的各個元素。因為實際上形參數(shù)組并不存在,編譯系統(tǒng)不為形參數(shù)組分配內(nèi)存。那么,數(shù)據(jù)的傳送是如何實現(xiàn)的呢? 在第四章中我們曾介紹過,數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時所進行的傳送只是地址的傳送, 也就是說把實參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實在的數(shù)組。實際上是形參數(shù)組和實參數(shù)組為同一數(shù)組,共同擁有一段內(nèi)存空間。圖5.1說明了這種情形。圖中設(shè)a為實參數(shù)組,類型為整型。a占有以2000 為首地址的一塊內(nèi)存區(qū)。b為形參數(shù)組名。當發(fā)生函數(shù)調(diào)用時,進行地址傳送, 把實參數(shù) 組a的首地址傳送給形參數(shù)組名b,于是b也取得該地址2000。 于是a,b兩數(shù)組共同占有以2000 為首地址的一段連續(xù)內(nèi)存單元。從圖中還可以看出a和b下標相同的元素實際上也占相同的兩個內(nèi)
                存單元(整型數(shù)組每個元素占二字節(jié))。例如a[0]和b[0]都占用2000和2001單元,當然a[0]等于b[0]。類推則有a[i]等于b[i]。
                [例5.5]數(shù)組a中存放了一個學(xué)生5門課程的成績,求平均成績。
                float aver(float a[5])
                {
                int i;
                float av,s=a[0]; 
                for(i=1;i<5;i++) 
                s=s+a[i];
                av=s/5;
                return av;
                }
                void main()
                {
                float sco[5],av;
                int i;
                printf("\ninput 5 scores:\n");
                for(i=0;i<5;i++)
                scanf("%f",&sco[i]);
                av=aver(sco);
                printf("average score is %5.2f",av);
                }
                float aver(float a[5])
                { ……
                }
                void main()
                {
                ……
                for(i=0;i<5;i++)
                scanf("%f",&sco[i]);
                av=aver(sco);
                ……
                } 
                本程序首先定義了一個實型函數(shù)aver,有一個形參為實型數(shù)組a,長度為5。在函數(shù)aver中,把各元素值相加求出平均值,返回給主函數(shù)。主函數(shù)main 中首先完成數(shù)組sco的輸入,然后以sco作為實參調(diào)用aver函數(shù),函數(shù)返回值送av,最后輸出av值。 從運行情況可以看出,程序?qū)崿F(xiàn)了所要求的功能

                3. 前面已經(jīng)討論過,在變量作函數(shù)參數(shù)時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同, 而形參的值發(fā)生改變后,實參并不變化, 兩者的終值是不同的。例5.3證實了這個結(jié)論。 而當用數(shù)組名作函數(shù)參數(shù)時,情況則不同。 由于實際上形參和實參為同一數(shù)組, 因此當形參數(shù)組發(fā)生變化時,實參數(shù)組也隨之變化。 當然這種情況不能理解為發(fā)生了“雙向”的值傳遞。但從實際情況來看,調(diào)用函數(shù)之后實參數(shù)組的值將由于形參數(shù)組值的變化而變化。為了說明這種情況,把例5.4改為例5.6的形式。[例5.6]題目同5.4例。改用數(shù)組名作函數(shù)參數(shù)。
                void nzp(int a[5])
                {
                int i;
                printf("\nvalues of array a are:\n");
                for(i=0;i<5;i++)
                {
                if(a[i]<0) a[i]=0;
                printf("%d ",a[i]);
                }
                }
                main()
                {
                int b[5],i;
                printf("\ninput 5 numbers:\n");
                for(i=0;i<5;i++)
                scanf("%d",&b[i]);
                printf("initial values of array b are:\n");
                for(i=0;i<5;i++)
                printf("%d ",b[i]);
                nzp(b);
                printf("\nlast values of array b are:\n");
                for(i=0;i<5;i++)
                printf("%d ",b[i]);
                }
                void nzp(int a[5])
                { …… 
                }
                main()
                {
                int b[5],i;
                ……
                nzp(b);
                ……
                }
                本程序中函數(shù)nzp的形參為整數(shù)組a,長度為 5。 主函數(shù)中實參數(shù)組b也為整型,長度也為5。在主函數(shù)中首先輸入數(shù)組b的值,然后輸出數(shù)組b的初始值。 然后以數(shù)組名b為實參調(diào)用nzp函數(shù)。在nzp中,按要求把負值單元清0,并輸出形參數(shù)組a的值。 返回主函數(shù)之后,再次輸出數(shù)組b的值。從運行結(jié)果可以看出,數(shù)組b 的初值和終值是不同的,數(shù)組b 的終值和數(shù)組a是相同的。這說明實參形參為同一數(shù)組,它們的值同時得以改變。 用數(shù)組名作為函數(shù)參數(shù)時還應(yīng)注意以下幾點:
                a. 形參數(shù)組和實參數(shù)組的類型必須一致,否則將引起錯誤。
                b. 形參數(shù)組和實參數(shù)組的長度可以不相同,因為在調(diào)用時,只傳送首地址而不檢查形參數(shù)組的長度。當形參數(shù)組的長度與實參數(shù)組不一致時,雖不至于出現(xiàn)語法錯誤(編譯能通過),但程序執(zhí)行結(jié)果將與實際不符,這是應(yīng)予以注意的。如把例5.6修改如下:
                void nzp(int a[8])
                {
                int i;
                printf("\nvalues of array aare:\n");
                for(i=0;i<8;i++)
                {
                if(a[i]<0)a[i]=0;
                printf("%d",a[i]);
                }
                }
                main()
                {
                int b[5],i;
                printf("\ninput 5 numbers:\n");
                for(i=0;i<5;i++)
                scanf("%d",&b[i]);
                printf("initial values of array b are:\n");
                for(i=0;i<5;i++)
                printf("%d",b[i]);
                nzp(b);
                printf("\nlast values of array b are:\n");
                for(i=0;i<5;i++)
                printf("%d",b[i]);
                }
                本程序與例5.6程序比,nzp函數(shù)的形參數(shù)組長度改為8,函數(shù)體中,for語句的循環(huán)條件也改為i<8。因此,形參數(shù)組 a和實參數(shù)組b的長度不一致。編譯能夠通過,但從結(jié)果看,數(shù)組a的元素a[5],a[6],a[7]顯然是無意義的。c. 在函數(shù)形參表中,允許不給出形參數(shù)組的長度,或用一個變量來表示數(shù)組元素的個數(shù)。

            上一頁  1 2 3 4 5 6 7 8 9 10  ... 下一頁  >> 
            文章搜索
            計算機等級考試欄目導(dǎo)航
            版權(quán)聲明:如果計算機等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@eeeigo.com,我們將會及時處理。如轉(zhuǎn)載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。