C++指针中const的基本用法;
const int * pt; //指向int型常量的指针,指针可以修改,指针指向的内容不能修改;
int * const pt; //指向int型数据的常量指针,指针本身不可以修改,指针指向的内容可以修改;
const double * const size; //以上两种的结合,都不可以修改;
int func(const int * a, int * b);
将指针参数声明为指向常量数据的指针有两条理由:
- 可以避免由于无意间修改数据而导致的编程错误;
- 使用const使得函数能够处理const和非const实参,否则将只能接受非const数据;
假设有两个变量const int * p和int *q,上面这句话的意思是说参数a可以接受p也可以接受q而且可以确保实参在函数内不会被修改,而参数b只能接受参数q;
func(p, q); //VALID
func(q,q); //VALID
func(p,p); //INVALID
几个简单例子:
1.
int age = 35;
const int * pt = &age;
*pt += 1; //非法, 指针指向const int
age += 1; //虽然不能用*pt修改age,但age本身不是const,可以直接修改;
2.
const float g_earth = 9.8
const float *cpg = &g_earth; //OK
float *pg = &g_earth; //INVALID, g_earth是const类型的,pg是指向非const类型数据的指针,如果g_earth地址赋值给pg,则可以使用pg来修改g_earth地址的值,这使得g_earth的const状态很荒谬,C++是禁止这种情况的;
3.
int slot = 3;
int * const finger = &slot;//finger只能指向slot,但可以修改slot的值;
4.
double trouble = 2.0E30
const double * const trust = &trouble; //trust只能指向trouble,而且不能用trust修改trouble的值,trust和*trust都是const;
本文介绍了C++指针中const的基本用法,如指向常量的指针、常量指针及二者结合的情况。还阐述了将指针参数声明为指向常量数据指针的理由,可避免编程错误,使函数能处理const和非const实参,并通过多个例子进行了说明。

1039

被折叠的 条评论
为什么被折叠?



