use*_*918 2 c pointers constants c99
我正在查看C99规范(N1256.pdf),其中说(第11506页):
const int *ptr_to_constant;
int *const constant_ptr;
Run Code Online (Sandbox Code Playgroud)
"ptr_to_constant指向的任何对象的内容不应该通过该指针修改,但是ptr_to_constant本身可以更改为指向另一个对象.同样,constant_ptr指向的int的内容可能会被修改,但是constant_ptr本身应该总是指向同一地点." (6.7.5.1指针声明符)
从我之前读到的内容来看,以下两个陈述产生了相同的行为.
int *const constant_ptr; /* This form is mentioned in the standard */
int const *constant_ptr; /* This form is NOT mentioned in the standard */
Run Code Online (Sandbox Code Playgroud)
我想知道第二种形式是正确的还是只是一种延伸.
在此先感谢,-S
实际上int const *constant_ptr;是一样的const int *ptr_to_constant;.该const关键字影响左边的元素,如果不是,它会在合适的影响因素.
int const *constant_ptr;,这里左边的元素const是int.
const int *ptr_to_constant;,这里const左边没有元素,所以它适用于te right,即int.
const int *ptr_to_constant;
Run Code Online (Sandbox Code Playgroud)
这里,只有指针指向的值是常量.
int *const constant_ptr;
Run Code Online (Sandbox Code Playgroud)
这里,指针是常量.
int const *constant_ptr;
Run Code Online (Sandbox Code Playgroud)
这里,只有指针指向的值是常量.
int const * const constant_ptr_to_constant;
Run Code Online (Sandbox Code Playgroud)
这里,指针和它指向的值是常量.
编辑:
int const *constant_ptr;,你调用指针constant_ptr,但如果我保留你的名字方案,它应该被调用ptr_to_constant.