LB.*_*LB. 260 c pointers const
有什么区别:
char * const
Run Code Online (Sandbox Code Playgroud)
和
const char *
Run Code Online (Sandbox Code Playgroud)
wor*_*ad3 339
不同的是,const char *
是一个指针指向一个const char
,而char * const
是一个常数指针char
.
第一个,指向的值不能改变,但指针可以.第二个,指向的值可以改变,但指针不能(类似于引用).
还有一个
const char * const
Run Code Online (Sandbox Code Playgroud)
这是一个指向常量char的常量指针(因此无法更改它).
注意:
以下两种形式是等效的:
const char *
Run Code Online (Sandbox Code Playgroud)
和
char const *
Run Code Online (Sandbox Code Playgroud)
C++标准中描述了其确切原因,但重要的是要注意并避免混淆.我知道几种编码标准更喜欢:
char const
Run Code Online (Sandbox Code Playgroud)
过度
const char
Run Code Online (Sandbox Code Playgroud)
(带或不带指针),以便const
元素的位置与指针相同const
.
dia*_*pir 96
为避免混淆,请始终附加 const限定符.
int * mutable_pointer_to_mutable_int;
int const * mutable_pointer_to_constant_int;
int *const constant_pointer_to_mutable_int;
int const *const constant_pointer_to_constant_int;
Run Code Online (Sandbox Code Playgroud)
Don*_*hey 41
const
总是修改它之前的东西(在它的左边),除了它是类型声明中的第一件事,它修改了它之后的东西(在它的右边).
所以这两个是一样的:
int const *i1;
const int *i2;
Run Code Online (Sandbox Code Playgroud)
他们定义指向a的指针const int
.您可以更改位置i1
和i2
点,但不能更改它们指向的值.
这个:
int *const i3 = (int*) 0x12345678;
Run Code Online (Sandbox Code Playgroud)
定义const
指向整数的指针并将其初始化为指向内存位置12345678.您可以更改int
地址12345678处的值,但不能更改i3
指向的地址.
Ada*_*eld 22
const * char
是无效的C代码,没有意义.也许你的意思是要问a const char *
和a 之间的区别char const *
,或者可能是a const char *
和a 之间的区别char * const
?
经验法则:从右到左阅读定义!
const int *foo;
意味着" foo
点(*
)到一个int
不能改变(const
)".
为了程序员,这意味着"我不会改变的价值是什么foo
指向".
*foo = 123;
或者foo[0] = 123;
无效.foo = &bar;
被允许.int *const foo;
意思是" foo
不能改变(const
)和点(*
)到int
".
为了程序员,这意味着"我不会改变的内存地址是foo
指".
*foo = 123;
或被foo[0] = 123;
允许.foo = &bar;
会无效的.const int *const foo;
意味着" foo
不能改变(const
)和点(*
)到int
不能改变(const
)".
为了程序员,这意味着"我不会改变价值的东西foo
指向,我也不会改变地址是foo
指".
*foo = 123;
或者foo[0] = 123;
无效.foo = &bar;
会无效的.1)const char*x这里X基本上是一个指向常量值的字符指针
2)char*const x指的是常量的字符指针,但它指向的位置可以改变.
3)const char*const x是1和2的组合,意味着它是一个指向常量值的常量字符指针.
4)const*char x将导致编译器错误.它不能被宣布.
5) char const*x等于1.
经验法则是如果const是带有var名称,那么指针将是常量但指向位置可以改变,否则指针将指向一个恒定位置,指针可以指向另一个位置,但指向位置内容不能改变.
归档时间: |
|
查看次数: |
182607 次 |
最近记录: |