国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> 函數(shù)
新聞資訊
NEWS INFORMATION

函數(shù)

發(fā)布時間:2019-05-22

 

第一節(jié)  函數(shù)的定義

知識點:函數(shù)的定義法則;

重要程度:★★★

概念題目:

1、C語言的程序設計中,基本組成單位就是函數(shù)。一個特定的函數(shù)是具有獨立功能的C語言代碼塊,用于完成特定的運算任務。

2、一個C語言程序,可以由一個或多個函數(shù)組成。但是一定要注意:在一個程序中只能有一個main函數(shù),無論其位置如何,總是程序開始運行的地方。

3、函數(shù)最大的用處是完成某項功能,函數(shù)可以用來解決相同的問題,這樣可以減少重復編寫的工作量,提高整個程序的可讀性。

4、函數(shù)的返回值默認情況下為int。

5、在一個函數(shù)的函數(shù)體中不允許再定義新的函數(shù)。

6、函數(shù)使用兩種規(guī)則:第一要求先定義,后調用。第二先聲明,再調用,后定義。

練習題:以下敘述中錯誤的是(    )。c
A)C語言編寫的函數(shù)源程序,其文件名后綴可以是.C
B)C語言編寫的函數(shù)都可以作為一個獨立的源程序文件
C)C語言編寫的每個函數(shù)都可以進行獨立的編譯并執(zhí)行
D)一個C語言程序只能有一個主函數(shù)

1、函數(shù)的定義

我們看到函數(shù)一般形式的定義如下:

函數(shù)返回值的類型名  函數(shù)名 (類型名1  形式參數(shù)名1,類型名2  形式參數(shù)名2,……)

{

說明部分

語句部分

}

在定義的形式中,第一行整體稱之為函數(shù)的首部,圓括號中的形式參數(shù)簡稱為形參。函數(shù)體是指一對花括號括起來的部分,函數(shù)體中的主要功能是完成函數(shù)中需要使用的變量的定義說明、完成必要的功能的代碼,也就是完成函數(shù)功能。

1:一個用來計算兩個整型數(shù)據(jù)相加的函數(shù)。

 int add(int x,int y)

{

  int z ;

    z=x+y ;

    return z ;

}

對照函數(shù)的一般形式定義,我們可以知道該例中:

函數(shù)返回值的類型名:int         函數(shù)名: add

類型名1  形式參數(shù)名1:  int  x    類型名2  形式參數(shù)名2:  int  y

說明,語句部分:int z ;

          z=x+y ;

          return z ;

說明:

1)函數(shù)的返回值實際上就是函數(shù)的運算結果。當函數(shù)返回值的類型名缺省時,返回值類型默認為int類型,而不是無返回值。如果要函數(shù)只是進行運算,不要有運算結果,也就是要函數(shù)沒有返回值,那么類型名應為void。

2)函數(shù)名實際上相當于人的姓名,是用戶定義標識符。在同一程序中,函數(shù)的名稱必須互不相同。主函數(shù)的函數(shù)名必須為main,且只有一個。

3)如果函數(shù)沒有形式參數(shù),也沒有函數(shù)體具體的實現(xiàn),那么這個函數(shù)就叫做空函數(shù)。如下面的函數(shù)wangcheng就是一個空函數(shù):

wangcheng( )

{

}

對形參的一點說明。

形參與這些變量都是屬于這個函數(shù)的。是函數(shù)被使用的時候臨時分配的,一旦函數(shù)使用完畢,這些空間均被釋放。它們作用的范圍也只是本函數(shù)內,因此可以與其他函數(shù)的變量、形參同名。例如例1中,變量x、y、z都是屬于函數(shù)add的,那么與其它函數(shù)中出現(xiàn)的x、y、z是不沖突的,同時,當add函數(shù)使用完成后,x、y、z使用也就完成,系統(tǒng)會自動把x、y、z釋放掉。

第二節(jié)  函數(shù)的返回值

1、函數(shù)的返回值(考試重點)

1、函數(shù)的返回值實際上就是函數(shù)運行的結果。

2、如果要求函數(shù)沒有返回值,即返回值類型為void。

3、一個函數(shù)可以有多個return的語句,但是每次調用函數(shù),只有一個return語句被執(zhí)行。程序一旦執(zhí)行return語句就會結束當前函數(shù)的運行,其作用有些類似于循環(huán)結構中的break語句。

4、一對圓括號可以缺省。以下的返回方式都正確return z;  return  x+y;  return  (x+y) 直接寫上一個數(shù)值也是對的,如return 9。所以我們記住:return 是返回函數(shù)計算得到的結果。

5、函數(shù)的返回值就是表達式的值,返回值的類型必須與函數(shù)首部中返回值的類型一致。否則系統(tǒng)將強制的以首部中的類型為準。(近幾年考得很多)

    int  add(float a,  flaot b)

{

  float  c;

  c= a+b;

  return c;

}   

這個地方注意雖然是return c為整型,但是函數(shù)首部中是int,最后是以首部為準,就是返回一個整型。

1:定義一個求矩形面積的函數(shù):

double recarea ( double x, double y)

{     double area;

area=x*y;

return area;

}

在這個函數(shù)中:

1) 函數(shù)的首部是double recarea(double x, double y)。該函數(shù)的返回值類型為double,函數(shù)名為rearea,一共有2個形參,類型都是double,形參名分別為x,y。

2) 函數(shù)體部分中定義了一個double類型的變量area,它是用來存放矩形的面積。也就是把兩個形參的乘積賦值給它。

3) 該函數(shù)是要有運算結果的,且結果是矩形的面積。也就是我們要把變量area中的內容作為函數(shù)的運算結果,這個是通過return area 語句完成的。

4) 該函數(shù)實際解決的問題是:只要知道了矩形的長和寬,就可以通過recarea函數(shù)求得矩形的面積。每次可以傳遞不同的長和寬的數(shù)值給recarea函數(shù),這個叫做函數(shù)的調用,后面會詳細介紹。

2:以下isprime函數(shù)的功能是判斷形參a是否為素數(shù),如果是素數(shù),函數(shù)返回1,否則返回0。請?zhí)羁。本題是2006年4月的考題,考察點return語句的使用,難度適中。

int  isprime(int  a)

{     int  i;

for(i=2;i<=a/2;i++)

if(a%i==0)                   ;

                       ;

}

分析:

從函數(shù)的首部了解函數(shù)名、函數(shù)的返回值類型、函數(shù)的形式參數(shù)。可知:返回值類型int,函數(shù)名isprime,形參為int類型,形參名字為a。在函數(shù)體中,定義一個int類型的變量i,后面語句部分是判定素數(shù)的方法:判斷一個整數(shù)是不是素數(shù),就要看除了1和它本身外,還有沒有能被它整除的整數(shù)。

循環(huán)的變量i要從2開始一直到a/2,一旦有一個i能被a整除,那么a就不是素數(shù)。題目要求不是素數(shù),函數(shù)返回0。所以if條件后面a%i==0表示a整除i,所以不是素數(shù),應該填寫return 0。如果整個for循環(huán)結束了if的條件a%i==0都為假,即表示沒有哪一個i能被a整除,a必為素數(shù),返回1。因此后面應填寫 return 1 。

注意:執(zhí)行了return語句后就會退出函數(shù),不會再執(zhí)行后面的語句,所以該函數(shù)雖然有兩個return語句,但是每次只會執(zhí)行一個return語句。

第三節(jié)  庫函數(shù)

知識點:庫函數(shù)的使用;返回類型、數(shù)值;形式參數(shù)的類型、個數(shù);

重要程度:★★★★

庫函數(shù)是不需要用戶自己去編寫,對于這些函數(shù),用戶不需要定義,就可以直接使用。

需要注意:

1) 不同的庫函數(shù)放在不同的庫中。所以使用某一類庫函數(shù)的時候,首先要打開這個庫才可以使用里面的庫函數(shù)。打開庫函數(shù)的方法是:在程序的開頭使用include命令包含頭文件。例如:printf函數(shù)是庫函數(shù),它是屬于庫“stdio.h”的。所以使用printf函數(shù)要在程序開頭加上#include "stdio.h"。再舉一個例子:在C語言中有一些處理數(shù)學方面的函數(shù),如求根函數(shù)(sqrt函數(shù))或求絕對值函數(shù)(abs函數(shù)),這些函數(shù)是放在庫“math.h”中的。使用這些函數(shù)就必須在程序開頭加上如下命令:#include "math.h"。

2) #include "stdio.h",其中的""也可以用一對< >代替:#include <stdio.h>

 

3) 庫函數(shù)要掌握的是其使用的方法,返回的數(shù)值參數(shù)的個數(shù)、參數(shù)的類型

 

4) 打開庫函數(shù)#include "stdio.h"的后面是不要寫分號的。

 

5)?嫉膸旌瘮(shù):(考試重點

1、sqrt(4)             返回√4的值

2、fabs(x)             返回雙精度參數(shù)x的絕對值

3、pow( 2,3)         返回23的值(考得是最多的)

4、exp( 3 )            返回指數(shù)函數(shù)e3的值

 

第三節(jié)  調用函數(shù)

知識點:函數(shù)調用的規(guī)則;函數(shù)調用的實際作用是使用函數(shù);

重要程度:★★★★★

調用函數(shù)實際上就是使用函數(shù),調用一次就是使用一次。每次調用函數(shù)的時候,可以給函數(shù)傳遞不同的數(shù)值,得到不同的運行結果。

調用某些函數(shù),可以求得函數(shù)值或者完成一些流程(如打印)的功能。

 

1、函數(shù)的調用形式

函數(shù)調用的一般形式為: 函數(shù)名(實際參數(shù)表)

1:一個具體的調用例子

int add(int x,int y)

{ int z ;

    z=x+y ;

    return z ;

}

main()

{ int sum;

  sum=add(5,6);

  printf(“sum=%d”,sum);

}

例1中:有兩個函數(shù),一個是main函數(shù),也就是主函數(shù)。另一個是add函數(shù),是用來處理兩個數(shù)相加的。

說明:

1) 在main函數(shù)中,add(5,6);就稱為函數(shù)的調用?梢钥吹胶瘮(shù)調用時,與定義不同。不用寫返回值類型和實際參數(shù)(簡稱“實參”)類型。函數(shù)add括號中5,6就是實際參數(shù)(它們有實際的意義)。    

2)實參可以是常量、變量、表達式,甚至是函數(shù)的調用(函數(shù)值)。所以這個地方

實參為常量:  sum=add(5,6);合法調用。

實參為變量:  sum=add(x,6);假定x給了一個初始數(shù)值5,也是合法調用。

實參為表達式: sum=add(x+y,6);只要x+y可得一個結果且類型為整型,也是合法調用。

實參為函數(shù)的返回數(shù)值:sum=add(add(5,6),6);由于add(5,6)可以得到一個結果11,所以也是合法調用。(近幾次考試重點)

3)函數(shù)的調用可以作為一條獨立的語句。add(5,6)這個函數(shù)調用有返回值時,函數(shù)調用可以作為一個表達式出現(xiàn)在任何合法的地方。如果add(5,6)這個調用函數(shù)無返回值(即返回值類型為void)時,不能把函數(shù)調用的結果通過賦值號進行賦值:sum=add(5,6)就錯了,因為add(5,6)函數(shù)調用就沒有運算的結果,無法給變量sum賦值。

下面通過幾個例子來具體學習函數(shù)的調用:

2與數(shù)學式子        對應的C語言表達式是

 

A) 3*x^n(2*x-1)                               B) 3*x**n(2*x-1)

C) 3*pow(x,n)*(1/(2*x-1))          D) 3*pow(n,x)/(2*x-1)

分析:本題考察點:庫函數(shù)的調用。^只是按位異或。x^n顯然不是xn ,A顯然是錯誤的。C語言中沒有乘方的符號,xn要通過C語言的庫函數(shù)來完成的。處理乘方的庫函數(shù)是pow(x,n)。注意參數(shù)的先后次序。D選項錯誤地傳遞了參數(shù),返回值為nx。B選項中沒有“**”這種運算符號,錯誤。C選項正確的使用了庫函數(shù)pow(),實參x和n正確的傳入,返回值為xn。答案為C。

3 以下函數(shù)定義:

void fun( int  n, double  x)  { …… }

若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun的正確調用語句是

A) fun(int  y,double  m);             B) k=fun(10,12.5);

C) fun(x,n);                           D) void fun(n,x);

分析:本題考察點:調用函數(shù)的語法規(guī)則。觀察函數(shù)的首部,注意到fun函數(shù)返回類型為void,表示沒有返回值。第一個形參類型為int,第二個形參類型為double。A項調用函數(shù)時寫出實際參數(shù)類型,這個是錯誤的。B選項fun(10,12.5)是沒有運算結果的,是無返回值。那么調用時不能賦值給變量k的。D項調用函數(shù)時不需寫出返回值類型void。C選項形參與實參的同名不互相影響,是正確的。

4:本題是2006年9月的考題。以下程序中,函數(shù)fun的功能是計算x2-2x+6,主函數(shù)中將調用fun函數(shù)計算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

請?zhí)羁铡?/p>

#include   "math.h"

double  fun(double  x) { return(x*x-2*x+6);}

main( )

{     double x,y1,y2;

printf("Enter x: ");  scanf("%lf",&x);

y1=fun(              );

y2=fun(              );

printf("y1=%lf,y2=%lf\n",y1,y2);

}

分析:考察點:函數(shù)調用中實參與形參之間的傳遞。題目要求中有兩個多項式的計算,實際上是多項式x2-2x+6的x取兩次不同的數(shù)值來運算。也就是在C語言中兩次調用函數(shù),每次調用傳遞不同實參的問題?芍瘮(shù)fun返回值為double類型。變量y1實際上存放當形參x為x+8時fun函數(shù)的計算結果。變量y2實際上存放形參x為sin(x)時fun函數(shù)的計算結果。因此,只需在兩次調用fun函數(shù)的時候寫出正確的實參就可以了。整個程序是實現(xiàn)了從鍵盤輸入x的值,即達到了輸出y1與y2值的功能。第一空填x+8,第二空填sinx。

第四節(jié)  函數(shù)的聲明

知識點: 函數(shù)聲明合法的幾種表示方式;

重要程度:★★★★

我們知道,每個人都是先起名字,才可以稱呼其人。函數(shù)也是這樣,一般情況下,函數(shù)應遵循“先定義后調用”的規(guī)則。當然,很多時候都把函數(shù)的定義統(tǒng)統(tǒng)放在主函數(shù)main的后面,即定義在調用之后。這樣做,也可以。但必須是在調用之前對函數(shù)進行聲明。聲明是表示有這樣的一個函數(shù)存在。

1、函數(shù)聲明的一般形式

(函數(shù)聲明必要的是函數(shù)名、參數(shù)個數(shù)、參數(shù)的類型、返回值的類型這四樣,其中特別記住,函數(shù)聲明中函數(shù)的參數(shù)的名字是可以變化甚至不寫的。。。

一個簡單的例子

double recarea( double x, double y);           /*函數(shù)聲明*/

main( )

{     double area;

area=recarea(2.2,3.3);                      /*函數(shù)調用*/

printf("area=%d",z);

}

double area( double x, double y)           /*函數(shù)定義*/

{     double area;

area=x*y;

return area;}

針對該例,我們寫出幾種合法的函數(shù)聲明,

寫法一:double recarea( double x, double y);  這個和我們后面函數(shù)定義的第一部分一模一樣。

寫法二:double recarea( double , double );  聲明的時候,可以省略形式參數(shù)。

寫法三:double recarea( double a, double y); 聲明的時候,參數(shù)的名稱可以和后面定義時候不同。

在使用函數(shù)時,可以有三種方式:

(1)先定義后調用。此時不需要進行函數(shù)聲明。

(2)先聲明,后調用,最后定義,就是上面例子中采用的方式。

(3)對于返回類型是int類型的,可以先調用,后定義。不需要聲明。

有難度的考題;(含有指針的函數(shù)聲明)

    int *max(int *x , int *y)

{if(*x>*y)return x;

else return y;}

這種函數(shù)的聲明的方法:

1、    int *max(int *x , int *y) 這個是與定義一樣的聲明。

2、    int *max(int * , int *)   這個是省略了變量的聲明。

3、    int *max(int *b  , int *a)這個是改變了變量的聲明。

2、函數(shù)聲明的位置

函數(shù)聲明的位置有兩種方式:

1)在函數(shù)的外部:那么只要出現(xiàn)了函數(shù)的聲明,從聲明之后的任何位置都可以調用該函數(shù)。

2)在某函數(shù)的內部:此時的函數(shù)聲明就有使用范圍了。函數(shù)的調用只能在函數(shù)聲明出現(xiàn)的地方。其它函數(shù)中是不能調用該函數(shù)的。

1: 若程序中定義了以下函數(shù)

float add(float a, float b)

{ float c;  

c=a+b;

return c;}

并將其放在調用語句之后,則在調用之前應進行函數(shù)聲明,以下選項中錯誤的是

A) float  add(float a, b);                   B) float  add(float, float);

C) float  add(float b, float a);       D) float  add(float x, float y);

分析:本題考察點:在函數(shù)聲明的三種形式。A選項缺少第二個參數(shù)的類型名。答案選擇A。

2本題是2006年4月的考題,若各選項中所用變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)值, 以下選項中錯誤的程序是

A) main( )                                         B) float fun(int  a,int  b){……}

{ …… x=fun(2,10); …… }                       main( )

float fun(int  a,int  b){ …… }             { …… x=fun(i,j); …… }

C) float fun(int,int);                             D) main( )

main( )                                                         {  float fun(int  i,int   j);

{ …… x=fun(2,10); …… }                   x=fun(i,j); …… }

float fun(int  a,int  b){ …… }             float fun(int  a,int  b){ …… }

分析:在函數(shù)的定義、調用和聲明。A沒有聲明就調用函數(shù)了,A選項錯誤。D是在函數(shù)體內聲明,然后調用。B和C都是在函數(shù)外面聲明,再在聲明之后調用。

函數(shù)是一段可以重復使用的代碼,用來獨立地完成某個功能,它可以接收用戶傳遞的數(shù)據(jù),也可以不接收。

無參函數(shù)的定義

如果函數(shù)不接收用戶傳遞的數(shù)據(jù),那么定義時可以不帶參數(shù)。如下所示:

返回值類型  函數(shù)名(){
    函數(shù)體
}

說明:

  • 返回值類型可以是C語言中的任意數(shù)據(jù)類型,例如 int、float、char 等。
  • 函數(shù)名是標識符的一種,命名規(guī)則和標識符相同。函數(shù)名后面的括號( )不能少。
  • 函數(shù)體是函數(shù)需要執(zhí)行的代碼。即使只有一個語句,也要由{ }包圍。
  • 在函數(shù)體中使用return語句返回數(shù)據(jù)。


例如,定義一個函數(shù),計算1加到100的結果:

  1. int sum(){
  2. int i, sum=0;
  3. for(i=1; i<=100; i++){
  4. sum+=i;
  5. }
  6. return sum;
  7. }

計算結果保存在變量sum中,通過return語句返回。sum為int型,所以返回值類型也必須為int,要一一對應。

return是C語言中的一個關鍵字,只能用在函數(shù)中,用來返回處理結果。

將上面的代碼補充完整:

  1. #include <stdio.h>
  2. int sum(){
  3. int i, sum=0;
  4. for(i=1; i<=100; i++){
  5. sum+=i;
  6. }
  7. return sum;
  8. }
  9. int main()
  10. {
  11. int a = sum();
  12. printf("The sum is %d\n", a);
  13. return 0;
  14. }

運行結果:
The sum is 5050

函數(shù)不能嵌套定義,main 也是一個函數(shù)定義,要將 sum 放在 main 外面。函數(shù)必須先定義后使用,所以 sum 只能在 main 前面。

注意:main 是函數(shù)定義,不是函數(shù)調用。當可執(zhí)行文件加載到內存后,系統(tǒng)從 main 函數(shù)開始執(zhí)行,也就是說,系統(tǒng)會調用我們定義的 main 函數(shù)。

無返回值函數(shù)

有的函數(shù)不需要有返回值,或者返回值類型不確定(很少見),那么用void表示,例如:

  1. void hello(){
  2. printf ("Hello,world \n");
  3. //沒有返回值就不需要 return 語句
  4. }

void是C語言中的一個關鍵字,表示空類型或無類型,絕大部分情況下也就意味著沒有 return 語句。

有參函數(shù)的定義

如果函數(shù)需要接收用戶傳遞的數(shù)據(jù),那么定義時就要帶參數(shù)。如下所示:

返回值類型  函數(shù)名(參數(shù)列表){
    函數(shù)體
}

用戶數(shù)據(jù)通過“參數(shù)列表”傳遞給函數(shù),供函數(shù)處理。例如,定義一個函數(shù)求兩個數(shù)中的最大值:

  1. int max(int a, int b){
  2. if (a>b){
  3. return a;
  4. }else{
  5. return b;
  6. }
  7. }

參數(shù)(Parameter)本質上也是變量,定義時要指明參數(shù)類型和參數(shù)名稱。參數(shù)列表中可以定義一個或多個參數(shù),多個參數(shù)之間用逗號,分隔。參數(shù)列表中給出的參數(shù)可以在函數(shù)體中使用。

調用 max() 函數(shù)時可以直接傳遞整數(shù):

int n = max(10, 20);

也可以傳遞變量:

int a = 10, b = 20;
int n = max(a, b);

也可以整數(shù)和變量一起傳遞:

int a = 10;
int n = max(a, 20);

變量 n 得到的值都是20。

函數(shù)定義時給出的參數(shù)稱為形式參數(shù),簡稱形參;函數(shù)調用時給出的參數(shù)(傳遞的數(shù)據(jù))稱為實際參數(shù),簡稱實參。函數(shù)調用時,將實參的值傳遞給形參,相當于一次賦值操作。注意:實參和形參的類型、數(shù)目必須一致。

將上面的代碼補充完整:

  1. #include <stdio.h>
  2. int max(int a, int b){
  3. if (a>b){
  4. return a;
  5. }else{
  6. return b;
  7. }
  8. }
  9. int main(){
  10. int num1, num2, maxVal;
  11. printf("Input two numbers: ");
  12. scanf("%d %d", &num1, &num2);
  13. maxVal = max(num1, num2);
  14. printf("The max number: %d\n", maxVal);
  15. return 0;
  16. }

運行結果:
Input two numbers: 100 200
The max number: 200

定義max時,變量a、b的值都是未知的;調用max時,分別將num1、num2的值傳遞給a、b,類似于:

a=num1;
b=num2;

return 語句可以有多個,可以在函數(shù)體的任意位置。在max中,根據(jù) if 的判斷結果來執(zhí)行不同的 return 語句。

函數(shù)一旦遇到 return 語句就返回(停止執(zhí)行),后面的所有語句都不會被執(zhí)行到,例如:

  1. int max(int a, int b){
  2. int n = (a>b) ? a : b;
  3. return n;
  4. printf("Function is performed\n");
  5. }

第4行代碼是多余的,永遠沒有執(zhí)行的機會。

如果把函數(shù)比喻成一臺機器,那么參數(shù)就是原材料,返回值就是最終產(chǎn)品;函數(shù)的作用就是根據(jù)不同的參數(shù)產(chǎn)生不同的返回值。

函數(shù)的參數(shù)

在函數(shù)定義中出現(xiàn)的參數(shù)可以看做是一個占位符,它沒有數(shù)據(jù),只能等到函數(shù)被調用時接收傳遞進來的數(shù)據(jù),所以稱為形式參數(shù),簡稱形參。

函數(shù)被調用時給出的參數(shù)包含了實實在在的數(shù)據(jù),會被函數(shù)內部的代碼使用,所以稱為實際參數(shù),簡稱實參。

形參和實參的功能是作數(shù)據(jù)傳送,發(fā)生函數(shù)調用時,實參的值會傳送給形參。

形參和實參有以下幾個特點:
1) 形參變量只有在函數(shù)被調用時才會分配內存,調用結束后,立刻釋放內存,所以形參變量只有在函數(shù)內部有效,不能在函數(shù)外部使用。

2) 實參可以是常量、變量、表達式、函數(shù)等,無論實參是何種類型的數(shù)據(jù),在進行函數(shù)調用時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。

3) 實參和形參在數(shù)量上、類型上、順序上必須嚴格一致,否則會發(fā)生“類型不匹配”的錯誤。

函數(shù)調用中發(fā)生的數(shù)據(jù)傳送是單向的,只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數(shù)調用過程中,形參的值發(fā)生改變,而實參中的值不會變化。

【示例】計算 1+2+3+...+(n-1)+n 的值。

  1. #include <stdio.h>
  2. int sum(int n){
  3. int i;
  4. for(i=n-1; i>=1; i--){
  5. n+=i;
  6. }
  7. printf("The inner n = %d\n",n);
  8. return n;
  9. }
  10. int main(){
  11. int m, total;
  12. printf("Input a number: ");
  13. scanf("%d", &m);
  14. total = sum(m);
  15. printf("The outer m = %d \n", m);
  16. printf("1+2+3+...+%d+%d = %d\n", m-1, m, total);
  17. return 0;
  18. }

運行結果:
Input a number: 100↙
The inner n = 5050
The outer m = 100
1+2+3+...+99+100 = 5050

通過 scanf 輸入 m 的值,作為實參,在調用 sum 時傳送給形參 n。

從運行情況看,輸入 m 值為100,即實參 m 的值為100,把這個值傳給函數(shù) sum 時,形參 n 的初值也為100,在函數(shù)執(zhí)行過程中,形參 n 的值變?yōu)?5050。函數(shù)運行結束后,輸出實參 m 的值仍為100,可見實參的值不隨形參的變化而變化。

函數(shù)的返回值

函數(shù)的返回值是指函數(shù)被調用之后,執(zhí)行函數(shù)體中的程序段所取得的值,可以通過return語句返回。

return語句的一般形式為:

return 表達式;

或者:

return (表達式);

例如:

return max;
return a+b;
return (100+200);

函數(shù)中可以有多個 return 語句,但每次調用只能有一個return 語句被執(zhí)行,所以只有一個返回值。

一旦遇到 return 語句,不管后面有沒有代碼,函數(shù)立即運行結束,將值返回。例如:

  1. int func(){
  2. int a=100, b=200, c;
  3. return a+b;
  4. return a*b;
  5. return b/a;
  6. }

返回值始終 a+b 的值,也就是300。

沒有返回值的函數(shù)為空類型,用void進行說明。例如:

  1. void func(){
  2. printf("Hello world!\n");
  3. }

一旦函數(shù)的返回值類型被定義為 void,就不能再接收它的值了。例如,下面的語句是錯誤的:

int a = func();

為了使程序有良好的可讀性并減少出錯, 凡不要求返回值的函數(shù)都應定義為 void 類型。

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

亚洲欧美日韩国产成人| 日韩成人动画在线观看| 日韩欧美三级中文字幕| 高清国产日韩欧美熟女| 久久国产亚洲精品赲碰热 | 国产成人亚洲欧美二区综| 五月婷婷综合激情啪啪| 免费黄片视频美女一区| 中文字幕乱子论一区二区三区 | 亚洲中文字幕在线乱码av| 国产超碰在线观看免费| 午夜精品一区二区三区国产| 久久人妻人人澡人人妻| 欧美一区二区口爆吞精| 国产精品涩涩成人一区二区三区 | 好吊妞视频只有这里有精品| 亚洲国产天堂av成人在线播放| 亚洲精品国男人在线视频| 亚洲欧美日韩国产成人| 国语对白刺激高潮在线视频| 九九热这里只有精品哦| 五月情婷婷综合激情综合狠狠| 午夜国产福利在线播放| 国产一区二区精品高清免费| 国产精品一区二区香蕉视频| 国产色第一区不卡高清| 久久人妻人人澡人人妻| 欧美中文字幕一区在线| 亚洲国产成人爱av在线播放下载| 香蕉网尹人综合在线观看| 91人妻人人精品人人爽| 国产一区二区在线免费| 国产又猛又黄又粗又爽无遮挡| 欧美日韩国产的另类视频| 国产成人一区二区三区久久| 日韩av亚洲一区二区三区| 日本高清不卡在线一区| 日韩不卡一区二区视频| 国产成人精品综合久久久看| 五月婷婷六月丁香在线观看| 国产免费成人激情视频|