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号
广州京杭网络科技有限公司 版权所有