首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候使用const*和const * const?

什么时候使用const*和const * const?
EN

Stack Overflow用户
提问于 2014-01-13 17:33:05
回答 3查看 171关注 0票数 2

我已经看到了代码,人们将使用const作为函数的参数。使用const* vs const * const有什么好处?这可能是一个非常基本的问题,但如果有人能解释的话,我将不胜感激。

代码语言:javascript
复制
Bool IsThisNumberEqualToFive(int const * num)
{
    return(Bool)(5 != num );
}

Bool IsThisNumberEqualToFive(int const * const num)
{
    return(Bool)(5 != num );
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-13 17:34:45

  • 在第一个版本中,您承诺不会写入num指向的对象
  • 在第二个版本中,您承诺了这一点,并且您还防止了自己(即IsThisNumber..)从让num指向其他东西。

也就是说,在第二个版本的const,中,除了切入点之外,指针本身也是。

票数 6
EN

Stack Overflow用户

发布于 2014-01-13 17:35:16

对于参数

代码语言:javascript
复制
int const * num  // num is a pointer to const int. 

const是保护num点,to.The程序可以改变num的值,而不是*num。而为

代码语言:javascript
复制
int const * const num  // num is a const pointer to const int

最左边的const是保护指向的num,而最右边的是保护指针num它自己。在这种情况下,num*num都不会修改。

注意事项:理解

代码语言:javascript
复制
T const *p;  // T is any valid type

意思(更确切地说)。

这意味着,程序可以使用表达式p来更改p指定的指针对象的值,但不能使用表达式*p来更改*p可能指定的任何对象的值。如果程序有另一个不合格类型的表达式e ,该表达式指定 *p 也指定的对象,则该程序仍然可以使用 e 来更改该对象

票数 2
EN

Stack Overflow用户

发布于 2014-01-13 17:36:55

源越多地提前告诉编译器变量的值会发生什么(或者更好的“而不是发生”,就像const变量所期望的那样),编译器就可以更好地推测。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21097690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档