函數宣告

2018 資訊之芽-李旺陽

review

在上週的課程利用了C++內建的函數來解決問題,本週將會帶領大家撰寫自己的函數

int n = strlen(str1);

if( strncmp(str1,str2,n) )
    cout<<"Yee";

宣告

函數跟變數一樣, 使用之前需要事先宣告

回傳型態 函數名稱 ( 參數 )

int max( int x, int y );
回傳型態 函數名稱 參數
int max int x,int y

void

  • 如果沒有函數回傳值, 使用void表示
  • 如果函數沒有參數, 使用void表示(可省略)
void print( int d );
void nothing( );
回傳型態 函數名稱 參數
void print int d
void nothing void

Pass Array

函數可以傳遞陣列, 但是無法直接傳遞大小

double avg(int arr[], int N);

函數內容

宣告完函數之後, 就能來撰寫函數的內容了! 在宣告的後方接一個大括號, 裡面的內容就是函數的內容

int max(int a,int b)
{
    // max 函數的內容!
    if( a > b ) ...
    else ...
    其他code
}

int main()
{
    // main 函數的內容
}

函數內容

陣列的範例

int sum(int a[],int N)
{
    int s = 0;
    for( int i=0 ; i<N ; ++i )
    {
        s += a[i];
    }
    ...
}

int main()
{
    int data[4] = {1,2,3,4};
    cout<< sum( data , 4 ) ;
}

return

當函數完成計算之後, 使用return就能回傳函數的計算結果

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

int main()
{
    int x,y;
    cin >> x >> y;
    cout << max(x,y) << endl;
}

return

如果回傳型態是void, 則return可以省略

void sayhi(string str)
{
    if( str == "Nymphia" )
    {
        cout<<"hi!hi! "<<str;
        return ; // 後面不用放東西
    }
    cout<<"hi! "<<str;
    // 可以省略 return ; 
}

Forward Declaring

變數的宣告與內容可以分開寫, 讓排版更整齊

int foo(int,int);     //參數名字在這裡不重要
int yee(int a,int b); //可以省略

int main() { foo(1,2); yee(1,2); }

int foo(int a,int b)//這裡再給名字就好
{
    return yee(a+1,b+1);
}
int yee(int c,int d) //前面的名字沒意義, 用這裡的為準
{
    return c*d;
}

小練習

寫一個函數
int mid(int a,int b,int c)
可以回傳三個數字的中位數是什麼