【发布时间】:2020-09-09 12:10:11
【问题描述】:
我真的很困惑 const char 中的 const 到底是什么,因为我可以更改值。指针是常量还是这是什么?和 const char 或 char* 或 char const 有什么区别???
【问题讨论】:
-
是
const char的数组,指针本身不是const。
标签: c++ string pointers char constants
我真的很困惑 const char 中的 const 到底是什么,因为我可以更改值。指针是常量还是这是什么?和 const char 或 char* 或 char const 有什么区别???
【问题讨论】:
const char的数组,指针本身不是const。
标签: c++ string pointers char constants
char * p = ...
是一个指向字符的指针。您可以更改指针,以及指针指向的值。
char const * p = ...
const char * p = ...
是等价的,并且是指向char const 的指针。指针可以指向任何地方,但它必须始终指向char const。
char const * const p = ...
const char * const p = ...
是等价的,并声明一个指向char const 的const 指针。您无法更改指针指向的内容或指针指向的值。
char * const p = ...
是一个 const 指向一个字符的指针。您可以更改指向的值,但不能将指针更改为指向其他位置。
【讨论】:
不,您不能更改值。
const char* ptr = "thing";
ptr[2] = 'o'; // error
这是一个指向const chars 的指针。
但是,您可以使指针指向其他内容,因为它不是const char* const。 :)
Const 适用于左边,除非那里什么都没有,在这种情况下它适用于右边。
【讨论】:
我真的很困惑 const char 中的 const 到底是什么
char 是常量。 IE。指向的类型是const char。
因为我可以改变值。
确实,指针不是const,因此可以通过改变它的值来指向别处。
指针是常量
没有。它是一个指向 const 的非常量指针。
和const char有什么区别
它是一个不可变的字符。
或字符*
它是一个指向字符的指针。
还是 char const???
同const char。
【讨论】: