在 C++ 中,指標(*)與引用(&)的關鍵在於符號位置:位於型別左側屬於宣告運算子,位於變數右側則是解引用或取址運算。複雜宣告如 int*& 代表「指標的引用」,可避免指標內部元素的複製開銷。
/*
* test.cpp - 指標引用範例
* Created on: 2013.11.12
* Author: Caroline
* eclipse cdt; gcc 4.7.1
*/
#include <iostream>
int main(void) {
int i(10);
int* j = &i; // 一般指標
int i1(20);
int*& k = j; // 指標的引用,*k 是 *j 的引用
*k = i1; // 修改 *k 所指內容,同步修改 *j
typedef int* pint;
pint& k2 = j; // 透過 typedef 宣告指標引用
int* k3 = &*j, k4 = 10; // 取址後解引用等價於原指標
std::cout << "*k = " << *k << std::endl;
std::cout << "*j = " << *j << std::endl;
std::cout << "*k2 = " << *k2 << std::endl;
std::cout << "*k3 = " << *k3 << std::endl;
std::cout << "k4 = " << k4 << std::endl;
return 0;
}
typedef 定義別名掌握指標引用是精通 C++ 記憶體管理與高效能程式設計的基石。