黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

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

二級C輔導教程及考點分析:第五章 函數

    2.有參函數的一般形式 
    類型說明符 函數名(形式參數表) 
    型式參數類型說明 
    { 
    類型說明 
    語句 
    }
    有參函數比無參函數多了兩個內容,其一是形式參數表, 其二是形式參數類型說明。在形參表中給出的參數稱為形式參數, 它們可以是各種類型的變量, 各參數之間用逗號間隔。在進行函數調用時,主調函數將賦予這些形式參數實際的值。 形參既然是變量,當然必須給以類型說明。例如,定義一個函數, 用于求兩個數中的大數,可寫為:
    int max(a,b)
    int a,b;
    {
    if (a>b) return a;
    else return b;
    } 
    第一行說明max函數是一個整型函數,其返回的函數值是一個整數。形參為a,b。第二行說明a,b均為整型量。 a,b 的具體值是由主調函數在調用時傳送過來的。在{}中的函數體內, 除形參外沒有使用其它變量,因此只有語句而沒有變量類型說明。 上邊這種定義方法稱為“傳統格式”。 這種格式不易于編譯系統檢查,從而會引起一些非常細微而且難于跟蹤的錯誤。ANSI C 的新標準中把對形參的類型說明合并到形參表中,稱為“現代格式”。
    例如max函數用現代格式可定義為:
    int max(int a,int b)
    {
    if(a>b) return a;
    else return b;
    } 
    現代格式在函數定義和函數說明(后面將要介紹)時, 給出了形式參數及其類型,在編譯時易于對它們進行查錯, 從而保證了函數說明和定義的一致性。例1.3即采用了這種現代格式。 在max函數體中的return語句是把a(或b)的值作為函數的值返回給主調函數。有返回值函數中至少應有一個return語句。 在C程序中,一個函數的定義可以放在任意位置, 既可放在主函數main之前,也可放在main之后。例如例1.3中定義了一個max 函數,其位置在main之后, 也可以把它放在main之前。
    修改后的程序如下所示。
    int max(int a,int b)
    {
    if(a>b)return a;
    else return b;
    }
    void main()
    {
    int max(int a,int b);
    int x,y,z;
    printf("input two numbers:\n");
    scanf("%d%d",&x,&y);
    z=max(x,y);
    printf("maxmum=%d",z);
    }
    現在我們可以從函數定義、 函數說明及函數調用的角度來分析整個程序,從中進一步了解函數的各種特點。程序的第1行至第5行為max函數定義。進入主函數后,因為準備調用max函數,故先對max函數進行說明(程序第8行)。函數定義和函數說明并不是一回事,在后面還要專門討論。 可以看出函數說明與函數定義中的函數頭部分相同,但是末尾要加分號。程序第12 行為調用max函數,并把x,y中的值傳送給max的形參a,b。max函數執行的
    結果 (a或b)將返回給變量z。最后由主函數輸出z的值。

    函數調用的一般形式前面已經說過,在程序中是通過對函數的調用來執行函數體的,其過程與其它語言的子程序調用相似。C語言中, 函數調用的一般形式為: 

    函數名(實際參數表) 對無參函數調用時則無實際參數表。 實際參數表中的參數可以是常數,變量或其它構造類型數據及表達式。 各實參之間用逗號分隔!疦ext of Page在C語言中,可以用以下幾種方式調用函數:
    1.函數表達式
    函數作表達式中的一項出現在表達式中,以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。例如: z=max(x,y)是一個賦值表達式,把max的返回值賦予變量z!疦ext of Page
    2.函數語句
    函數調用的一般形式加上分號即構成函數語句。例如: printf ("%D",a);scanf ("%d",&b);都是以函數語句的方式調用函數。
    3.函數實參
    函數作為另一個函數調用的實際參數出現。 這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。例如: printf("%d",max(x,y)); 即是把max調用的返回值又作為printf函數的實參來使用的。在函數調用中還應該注意的一個問題是求值順序的問題。 所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。 對此, 各系統的規定不一定相同。
    到過,這里從函數調用的角度再強調一下。 看例5.2程序。
    void main()
    {
    int i=8;
    printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
    }
    如按照從右至左的順序求值。例5.2的運行結果應為:
    8
    7
    7
    8
    如對printf語句中的++i,--i,i++,i--從左至右求值,結果應為:
    9
    8
    8
    9
    應特別注意的是,無論是從左至右求值, 還是自右至左求值,其輸出順序都是不變的, 即輸出順序總是和實參表中實參的順序相同。由于Turbo C現定是自右至左求值,所以結果為8,7,7,8。上述問題如還不理解,上機一試就明白了。函數的參數和函數的值
    一、函數的參數
    前面已經介紹過,函數的參數分為形參和實參兩種。 在本小節中,進一步介紹形參、實參的特點和兩者的關系。 形參出現在函數定義中,在整個函數體內都可以使用, 離開該函數則不能使用。實參出現在主調函數中,進入被調函數后,實參變量也不能使用。 形參和實參的功能是作數據傳送。發生函數調用時, 主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。

    函數的形參和實參具有以下特點:
    1.形參變量只有在被調用時才分配內存單元,在調用結束時, 即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。 函數調用結束返回主調函數后則不能再使用該形參變量。

    2.實參可以是常量、變量、表達式、函數等, 無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。

    3.實參和形參在數量上,類型上,順序上應嚴格一致, 否則會發生“類型不匹配”的錯誤。

    4.函數調用中發生的數據傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。例5.3可以說明這個問題。
    void main()
    {
    int n;
    printf("input number\n");
    scanf("%d",&n);
    s(n);
    printf("n=%d\n",n);
    }
    int s(int n)
    {
    int i;
    for(i=n-1;i>=1;i--)
    n=n+i;
    printf("n=%d\n",n);
    }
    本程序中定義了一個函數s,該函數的功能是求∑ni=1i 的值。在主函數中輸入n值,并作為實參,在調用時傳送給s 函數的形參量n( 注意,本例的形參變量和實參變量的標識符都為n, 但這是兩個不同的量,各自的作用域不同)。 在主函數中用printf 語句輸出一次n值,這個n值是實參n的值。在函數s中也用printf 語句輸出了一次n值,這個n值是形參最后取得的n值0。從運行情況看,輸入n值為100。即實參n的值為100。把此值傳給函數s時,形參 n 的初值也為100,在執行函數過程中,形參n的值變為5050。 返回主函數之后,輸出實參n的值仍為100?梢妼崊⒌闹挡浑S形參的變化而變化。

    二、函數的值

    函數的值是指函數被調用之后, 執行函數體中的程序段所取得的并返回給主調函數的值。如調用正弦函數取得正弦值,調用例5.1的max函數取得的最大數等。對函數的值(或稱函數返回值)有以下一些說明:

    1. 函數的值只能通過return語句返回主調函數。return 語句的一般形式為: 
    return 表達式; 
    或者為:
    return (表達式);
    該語句的功能是計算表達式的值,并返回給主調函數。 在函數中允許有多個return語句,但每次調用只能有一個return 語句被執行, 因此只能返回一個函數值。

    2. 函數值的類型和函數定義中函數的類型應保持一致。 如果兩者不一致,則以函數類型為準,自動進行類型轉換。

    3. 如函數值為整型,在函數定義時可以省去類型說明。

    4. 不返回函數值的函數,可以明確定義為“空類型”, 類型說明符為“void”。如例5.3中函數s并不向主函數返函數值,因此可定義為:
    void s(int n)
    { ……
    }

    一旦函數被定義為空類型后, 就不能在主調函數中使用被調函數的函數值了。例如,在定義s為空類型后,在主函數中寫下述語句 sum=s(n); 就是錯誤的。為了使程序有良好的可讀性并減少出錯, 凡不要求返回值的函數都應定義為空類型。函數說明在主調函數中調用某函數之前應對該被調函數進行說明, 這與使用變量之前要先進行變量說明是一樣的。 在主調函數中對被調函數作說明的目的是使編譯系統知道被調函數返回值的類型, 以便在主調函數中按此種類型對返回值作相應的處理。 對被調函數的說明也有兩種格式,一種為傳統格式,其一般格式為: 類型說明符 被調函數名(); 這種格式只給出函數返回值的類型,被調函數名及一個空括號。

上一頁  1 2 3 4 5 6 7 8 9 10  ... 下一頁  >> 
文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
主站蜘蛛池模板: 很黄很色的1000部视频 | 国产精品成人网 | 日本a级特黄三级三级三级 日本a一级片 | 免费无遮挡十八女禁污污网站 | 丁香六月在线视频 | 麻豆国产免费影片 | 欧美高清网站 | 激情综合欧美 | 欧美亚洲综合在线观看 | 日韩亚洲欧美性感视频影片免费看 | 欧美videos极品另类 | 国产精选在线 | 欧美在线看欧美高清视频免费 | 亚洲三级视频在线 | 黄色免费一级 | 看日本黄色录像 | 天天曰天天干 | 人人色网| 偷亚洲偷国产欧美高清 | 亚洲欧美精品成人久久91 | 国产成人精品无缓存在线播放 | 国产亚洲欧美一区二区 | 中国性xxx免费视频 中国野外性xxxx | 91在i线观 | 亚洲欧美日本综合 | 最近中文字幕免费完整 | 狠狠色丁香婷婷综合小时婷婷 | 狠狠色狠狠综合久久 | 一级做a爰全过程免费视频毛片 | 在线 | 一区二区三区 | 天天做天天爱夜夜爽女人爽宅 | 国产免费理论片在线观看 | 乳色吐息在线观看免费 | 日韩亚洲一区中文字幕在线 | 精品日本一区二区 | 成人网在线视频 | 青青青视频免费一区二区 | 日本一区二区三区中文字幕视频 | 日韩美女一级毛片 | 大伊香蕉在线精品视频人碰人 | 日日摸夜夜摸狠狠摸97 |