C++ 快速導覽 - 函數 陣列參數

陣列 (array) 當函數 (function) 的參數 (parameter) 會自動轉換成指標 (pointer) ,因此可直接修改陣列的內容。宣告陣列參數也可以直接用指標,下面三者是同義的

void do_something(int *array) {}
void do_something(int array[]) {}
void do_something(int array[5]) {}


例如下面的 do_something() 印出陣列前 5 個元素值
#include <iostream>

void do_something(int n[]) {
    for (int i = 0; i < 5; i++) {
        std::cout << n[i] << std::endl;
    }
}

int main(void)
{
    int a[] = {1, 2, 3, 4, 5, 6, 7};
    do_something(a);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:fundemo07.cpp
    功能:示範 C++ 程式
    作者:張凱慶
    時間:西元 2013 年 1 月 */



編譯執行結果如下



下面的 do_something2() 則重新設定陣列的前 5 個元素值
#include <iostream>

void do_something2(int n[]) {
    for (int i = 0; i < 5; i++) {
        n[i] = 0;
    }
}

int main(void)
{
    int a[] = {1, 2, 3, 4, 5, 6, 7};
    do_something2(a);
    for (int i = 0; i < 7; i++) {
        std::cout << a[i] << std::endl;
    }
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:fundemo08.cpp
    功能:示範 C++ 程式
    作者:張凱慶
    時間:西元 2013 年 1 月 */


編譯執行結果如下



不過這樣的設計有個缺陷,就是沒有傳遞陣列大小的參數,有可能導致超出陣列索引值範圍的錯誤。因此保險一點的寫法是用另一個整數參數傳遞陣列大小,例如
void do_something(int array[], int n) {}


中英文術語對照
陣列array
函數function
參數parameter
指標pointer


您可以繼續參考
函數


相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁


參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial

C++ Primer, Fourth Edition, Stanley B. Lippman...

沒有留言: