const int = int const?
例如,是
int const x = 3;
有效的代码?
如果是这样,是否意味着一样
const int x = 3;
?
它们都是有效的代码,它们都是等效的。 对于指针types,虽然它们都是有效的代码,但不等同。
声明2个常量的整数:
int const x1 = 3; const int x2 = 3;
声明一个指针,其数据不能通过指针进行更改:
const int *p = &someInt;
声明一个不能改变的指针指向别的东西:
int * const p = &someInt;
是的,他们是一样的。 C ++中的规则本质上是const
适用于左边的types。 但是,如果将它放在声明的最左边,则会有一个例外,它适用于该types的第一部分。
例如在int const *
你有一个指向一个常量的指针。 在int * const
你有一个指向一个整数的常量指针。 你可以推断这个指针指向,英文可能会混淆,但原则是相同的。
关于另一方面的优点的另一个讨论,请看我关于这个问题的问题。 如果你很好奇为什么大多数人使用这个例外, 这个 Stroustrup的FAQ条目可能会有所帮助。
是的,那完全一样。 但是,指针有所不同。 我的意思是:
int a; // these two are the same: pointed value mustn't be changed // ie pointer to const value const int * p1 = &a; int const * p2 = &a; // something else -- pointed value may be modified, but pointer cannot point // anywhere else ie const pointer to value int * const p3 = &a; // ...and combination of the two above // ie const pointer to const value const int * const p4 = &a;
从“有效的C ++”项目21
char *p = "data"; //non-const pointer, non-const data const char *p = "data"; //non-const pointer, const data char * const p = "data"; //const pointer, non-const data const char * const p = "data"; //const pointer, const data
这在意义和有效性上是一样的。
据我所知,const只要涉及指针就会变得复杂。
int const * x; int * const x;
是不同的。
int const * x; const int * x;
是一样的。