最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~
const指针的定义:
const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下:
type *const 指针名称;
声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含义大不同:
const int * pOne; //指向整形常量 的指针,它指向的值不能修改
int
C++中的const更像编译阶段的#define
const int m = 10;
int n = m;
变量是要占用内存的,即使被const修饰也不例外。m,n两个变量占用不同的内存,int n = m;表示将m的值赋给n。
在C语言中,编译器会先到m所在的内存取出一份数据,再将这份数据赋给n;
在C++中,编译器会直接将10赋给m,没有读取内存的过程,和int n = 10效果一样。
在C++中的常量更类似于#define命令,是一个值替换的过程,只不过#define是在预处
当在C源代码文件中将变量声明为const时,可以通过以下方式实现:
const int i = 2;
然后,可以在另一个模块中使用此变量,如下表示:
extern const int i;
但若要获取与 C++ 中相同的行为,则必须将 const 变量声明为:
extern const int i = 2;
如果希望在 C++ 源代码文件声明用于 C 源代码文件的 extern 变量,请使用:
extern "C" const int x = 10;
以防止 C++ 编译器进行名