我已经看到了代码,人们将使用const作为函数的参数。使用const* vs const * const有什么好处?这可能是一个非常基本的问题,但如果有人能解释的话,我将不胜感激。
Bool IsThisNumberEqualToFive(int const * num)
{
return(Bool)(5 != num );
}
Bool IsThisNumberEqualToFive(int const * const num)
{
return(Bool)(5 != num );
}发布于 2014-01-13 17:34:45
num指向的对象num指向其他东西。也就是说,在第二个版本的const,中,除了切入点之外,指针本身也是。
发布于 2014-01-13 17:35:16
对于参数
int const * num // num is a pointer to const int. const是保护num点,to.The程序可以改变num的值,而不是*num。而为
int const * const num // num is a const pointer to const int最左边的const是保护指向的num,而最右边的是保护指针num它自己。在这种情况下,num和*num都不会修改。
注意事项:理解
T const *p; // T is any valid type意思(更确切地说)。
这意味着,程序可以使用表达式p来更改p指定的指针对象的值,但不能使用表达式*p来更改*p可能指定的任何对象的值。如果程序有另一个不合格类型的表达式e ,该表达式指定 *p 也指定的对象,则该程序仍然可以使用 e 来更改该对象。
发布于 2014-01-13 17:36:55
源越多地提前告诉编译器变量的值会发生什么(或者更好的“而不是发生”,就像const变量所期望的那样),编译器就可以更好地推测。
https://stackoverflow.com/questions/21097690
复制相似问题