指针(*)和引用(&),解引用(*)和取地址(&), 主要观察是在左面, 还是在右面, 如果在左面是前者, 在右面是后者;
如果比较多, 则要认真观察, 譬如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; 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; }
:&作为取地址操作时,其行为结果是在编译时就被确定的;而*,解引用操作(或取内容)操作,其行为结果只能在运行时才可被确定。