程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言函數的定義

C語言函數的定義

編輯:關於C語言
 

本節講解有參函數和無參函數的定義。

無參函數的定義

無參函數定義的一般形式如下:
    類型標識符  函數名(){
        聲明部分
        語句
    }
其中類型標識符和函數名稱為函數頭。類型標識符指明了本函數的類型,函數的類型實際上是函數返回值的類型。該類型標識符與前面介紹的各種說明符相同。函數名是由用戶定義的標識符,函數名後有一個空括號,其中無參數,但括號不可少。

{}中的內容稱為函數體。在函數體中聲明部分,是對函數體內部所用到的變量的類型說明。

在很多情況下都不要求無參函數有返回值,此時函數類型符可以寫為void。

我們可以改寫一個函數定義:

void Hello(){
    printf ("Hello,world \n");
}

這裡,只把main改為Hello作為函數名,其余不變。Hello函數是一個無參函數,當被其它函數調用時,輸出Hello world字符串。
 

有參函數定義的一般形式

有參函數定義的一般形式如下:
    類型標識符  函數名(形式參數表列){
        聲明部分
        語句
    }
有參函數比無參函數多了一個內容,即形式參數表列。在形參表中給出的參數稱為形式參數,它們可以是各種類型的變量,各參數之間用逗號間隔。在進行函數調用時,主調函數將賦予這些形式參數實際的值。形參既然是變量,必須在形參表中給出形參的類型說明。

例如,定義一個函數,用於求兩個數中的大數,可寫為:

int max(int a, int b){
    if (a>b) return a;
    else return b;
}

第一行說明max函數是一個整型函數,其返回的函數值是一個整數。形參為a,b,均為整型量。a,b的具體值是由主調函數在調用時傳送過來的。在{}中的函數體內,除形參外沒有使用其它變量,因此只有語句而沒有聲明部分。在max函數體中的return語句是把a(或b)的值作為函數的值返回給主調函數。有返回值函數中至少應有一個return語句。
 
在C程序中,一個函數的定義可以放在任意位置,既可放在主函數main之前,也可放在main之後。例如:可把max 函數置在main之後,也可以把它放在main之前。修改後的程序如下所示。

【例8-1】函數定義示例

#include <stdio.h>
int max(int a,int b){
    if(a>b)return a;
    else return b;
}
int main(void){
    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);
    return 0;
}

現在我們可以從函數定義、函數說明及函數調用的角度來分析整個程序,從中進一步了解函數的各種特點。

程序的第1行至第4行為max函數定義。進入主函數後,因為准備調用max函數,故先對max函數進行說明(程序第6行)。函數定義和函數說明並不是一回事,在後面還要專門討論。 可以看出函數說明與函數定義中的函數頭部分相同,但是末尾要加分號。程序第10行為調用max函數,並把x、y中的值傳送給max的形參a、b。max函數執行的結果(a或b)將返回給變量z。最後由主函數輸出z的值。
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved