const与指针、引用
2020-02-25 16:00:48来源:博客园 阅读 ()
const与指针、引用
const与指针类型
定义一个指针*p:
const int* p = NULL; int const* p = NULL; int* const p = NULL;
上面两行定义完全等价,第三行则不同。
下面两行定义也完全等价:
const int* const p = NULL; int const* const p = NULL;
举例说明:
int x = 3; const int* p = &x; //p=&y; 正确 //*p=4; 错误
const修饰的是*p,所以通过*p修改x的值是错误的。
int x = 3; int* const p = NULL; //p=&y; 错误
const修饰的是p,p只能指向一个地址,不能再改变。
const int x = 3; const int* const p = &x; //p=&y; *p=4; 都是错误的
上面这种情况,就不能再做任何修改。
const与引用类型
int x = 3; const int& y = x; //x=10; 正确 //y=20; 错误
y被const修饰,所以不能通过y去修改x的值。
更多示例:
const int x = 5; x = 5; //错误 int x = 3; const int y = x; y = 5; //错误 int x = 3; const int* y = &x; *y = 5; //错误
int x = 3, z = 4; int* const y = &x; y = &z; //错误 const int x = 3; const int& y = x; y = 5; //错误
const int x = 3; int* y = &x; //错误 int x = 3; const int* y = &x; //正确
上面这个示例,前者x是不可变的,而y是可变的,如果我们定义一个可变的指针指向一个不可变的变量,那么这就意味着存在风险,我们可以通过指针去修改x的值,这种情况编译器是不允许存在的,所以错误;对于后者,指针只有读权限,x则有读和写的权限,我们用一个权限小的对象接受一个权限大的对象这是允许的,而用一个权限大的对象接受一个权限小的对象则不允许。
原文链接:https://www.cnblogs.com/zhuifeng17/p/12363202.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Visual Studio 2019提示不能将const char*类型的值分配到con 2020-06-07
- C++ this指针 2020-06-03
- C++ const成员函数 2020-06-03
- 透彻理解C++11新特性:右值引用、std::move、std::forward 2020-04-30
- 纯虚函数与基类指针数组的运用 代码参考 2020-04-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash