void doubleValue(int *val) { *val *= 2; }這個函數的目的是使 val 指向的變數翻倍。當 val 被解除參照時,
*=
運算子對 val 指向的變數起作用。該語句可以將地址儲存在 val 中的原始變數乘以 2。當然,當呼叫該函數時,必須使用被翻倍的變數地址作為實參,而不是變數本身作為實參。doubleValue(&number);
該語句使用了地址運算子(&)將 number 的地址傳遞到 val 形參中。函數執行後,number 的內容將被乘以 2。下面的程式演示了該函數的用法://This program uses two functions that accept addresses of variables as arguments. #include <iostream> using namespace std; //Function prototypes void getNumber(int *); void doubleValue(int *); int main() { int number; //Call getNumber and pass the address of number getNumber(&number); // Call doubleValue and pass the address of number doubleValue(&number); // Display the value in number cout << "That value doubled is " << number << endl; return 0; } void getNumber(int *input) { cout << "Enter an integer number: "; cin >> *input; } void doubleValue(int *val) { *val *= 2; }程式輸出結果:
Enter an integer number: 10
That value doubled is 20
void getNumber(int *);
void doubleValue(int *);
cin >> *input;
間接運算子會使使用者輸入的值儲存在 input 指向的變數中,而不是 input 中。//This program demonstrates that a pointer may be used as a parameter to accept the address of an array. Either subscript or pointer notation may be used. #include <iostream> #include <iomanip> using namespace std; // Function prototypes void getSales(double *sales, int size); double totalSales(double *sales, int size); int main() { const int QUARTERS = 4; double sales[QUARTERS]; getSales(sales, QUARTERS); cout << setprecision(2); cout << fixed << showpoint; cout << "The total sales for the year are $"; cout << totalSales(sales, QUARTERS) << endl; return 0; } void getSales(double *array, int size) { for (int count = 0; count < size; count++) { cout << "Enter the sales figure for quarter "; cout << (count + 1) << ": "; cin >> array[count]; } } double totalSales(double *array, int size) { double sum = 0.0; for (int count = 0; count < size; count++) { sum += *array; array++; } return sum; }程式輸出結果:
Enter the sales figure for quarter 1: 10263.98
Enter the sales figure for quarter 2: 12369.69
Enter the sales figure for quarter 3: 11542.13
Enter the sales figure for quarter 4: 14792.06
The total sales for the year are $48967.86
cin >> array[count];
在 totalSales 函數中,array 還可以與以下語句中的間接運算子一起使用:sum += *array;
而在接下來的語句中,array 中的地址則可以遞增,以使指向下一個元素:array++;
上面介紹的兩個語句也可以合併成以下語句:sum += *array++;
* 運算子將首先解除參照 array,然後++
運算子將使得 array 中的地址遞增。