看下面这个例子:
#include <iostream>
int main(){
int *a=new int; // 初始化整型指针a,给a分配一个存储空间。
*a=4; // 给a指向的空间赋值
const int *b=a; // 把a的值赋给指针b,但(*b)是只读的类型。
//b++; // 指针是可以自增减的。
//(*b)++; // 错误,(*b)不能用于改变它所指向的数据,因为 它是const int类型,。
(*a)++;
const int * d = a;
std::cout <<a<<", "<<*a<<std::endl;
std::cout <<b<<", "<<*b<<std::endl;
int & c = *a;
c++; // c就是与a所指向的整数的一个引用整数,可以看成一个别名。
std::cout <<a<<", "<<*a<<std::endl;
std::cout <<b<<", "<<*b<<std::endl;
int * e = &*a; // 与 int *e = a;等价
(*e)++;
std::cout <<a<<", "<<*a<<std::endl;
std::cout <<b<<", "<<*b<<std::endl;
return 0;
}
参考:
http://www.cplusplus.com/forum/beginner/3958/
http://stackoverflow.com/questions/16071305/pass-pointers-to-objects-by-constant-reference-in-c