int var; // 一个int类型的对象 int *const c_ptr = &var; // 一个int类型指针常量 *c_ptr = 123; // 合法:我们可以修改它所引用的对象 ++c_ptr; // 错误:我们不能修改指针
int var; //一个int类型的对象
const int c_var = 100, // 一个int类型的常量对象
*ptr_to_const; // 一个指向常量的指针:指针本身不是常量!
ptr_to_const = &c_var; // 合法:使得ptr_to_const指向c_var
var = 2 * *ptr_to_const; // 合法:等效于var = 2 * c_var
ptr_to_const = &var; // 合法:使得ptr_to_const指向var
if ( c_var < *ptr_to_const ) // 合法:“只读”方式获取
*ptr_to_const = 77; // 错误:我们不能使用ptr_to_const修改var,
// 尽管var不是常量
int const c_var = 100, *ptr_to_const;
int *ptr = &var; // 一个指向var的int指针
*ptr = 77; // 合法:ptr 不是一个只读指针
ptr_to_const = ptr; // 合法:隐式地将ptr从指向int的指针
// 转换为指向int常量的指针
*ptr_to_const = 77; // 错误:不能通过一个只读指针修改一个变量
ptr = &c_var; // 错误:不能隐式地将指向int常量的指针转换
// 为指向int 的指针
ptr = (int *)&c_var; // 合法:显式的指针类型转换总是可行的
*ptr = 200; // 尝试修改c_var:可能会造成运行错误
void func( const int * const c_ptr_to_const );
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有