【发布时间】:2012-02-07 03:41:00
【问题描述】:
我知道 const 指针可以通过几种方式声明:
const int * intPtr1; // Declares a pointer that cannot be changed.
int * const intPtr2; // Declares a pointer whose contents cannot be changed.
// EDIT: THE ABOVE CLAIMS ARE INCORRECT, PLEASE READ THE ANSWERS.
但是在函数参数的上下文中相同的原则呢?
我认为以下是多余的:
void someFunc1(const int * arg);
void someFunc2(int * arg);
由于 someFunc 1 和 2 对指针本身进行了值传递,因此 someFunc1 在给定的函数调用中不可能更改原始指针的值。举例说明:
int i = 5;
int * iPtr = &i;
someFunc1(iPtr); // The value of iPtr is copied in and thus cannot be changed by someFunc1.
如果这些都是真的,那么声明一个具有 'const int * ptr' 类型 arg 的函数是没有意义的,对吗?
【问题讨论】:
-
您的声明方式错误。 "const int *" 是指向不可更改 int 的可更改指针。 "int * const" 是指向可变 int 的不可更改指针。
-
编辑了问题,以便触发快乐的谷歌用户不会误会。我留下了错误,所以答案仍然有那个上下文。
标签: c++ function pointers constants