C++ 速查手冊 V1.00 - 單元 8.2 - 指標參數




如果有需要用函數直接修改某些變數 (variable) ,就可以用該變數的指標 (pointer) 當參數,例如


001 #include <iostream>
002
003 void do_something(int* n_ptr) {
004    *n_ptr = 10;
005 }
006
007 int main() {
008    int a = 22;
009    std::cout << a 
010              << std::endl;
011
012    do_something(&a);
013    std::cout << a 
014              << std::endl;
015
016    return 0;
017 }
018  
019 /* Kaiching Chang 
020    u0802_1.cpp
021    2014-02 */

do_something() 接受一個整數指標參數,然後將參數重新設定為 10


003 void do_something(int* n_ptr) {
004    *n_ptr = 10;
005 }

編譯執行,結果如下


$ g++ u0802_1.cpp
$ ./a.out
22
10
$

由於函數只能有一個回傳值,因此當程式中有多個變數需要用函數修改時,利用指標當參數為一個解決方案,另舉一例如下


001 #include <iostream>
002
003 int do_something2
004 (int* n1_ptr, int* n2_ptr) {
005    *n1_ptr *= 2;
006    *n2_ptr *= 2;
007    return *n1_ptr + *n2_ptr;
008 }
009
010 int main() {
011    int a = 22;
012    int b = 33;
013    std::cout << "a + b: "
014              << do_something2(&a, &b)
015              << std::endl;
016    std::cout << "a: "
017              << a
018              << std::endl;
019    std::cout << "b: "
020              << b
021              << std::endl;
022     
023    return 0;
024 }
025  
026 /* Kaiching Chang 
027    u0802_2.cpp
028    2014-02 */

編譯執行,結果如下


$ g++ u0802_2.cpp
$ ./a.out
a + b: 110
a: 44
b: 66
$

continue ...

沒有留言: