int *ptr; // *ptr is an int value
int const *ptrToConst; // *ptrToConst is a constant (int: integer value)
int * const constPtr; // constPtr is a constant (int *: integer pointer)
int const * const constPtrToConst; // constPtrToConst is a constant (pointer)
和
const int* ptrToConst; //identical to: int const * ptrToConst,
const int* const constPtrToConst;//identical to: int const * const constPtrToConst
大
如果我使用[]
而不是*
来声明数组,这是如何适用的?例如,如何转换以下内容:
char s[] = "Hello";
到const"?
的" const指针答案 0 :(得分:1)
你没有。首先s
不是指针,因为它不是指针,你已经无法将数组更改为“指向”其他位置。
所以你需要的是使数组的内容保持不变:
const char s[] = "Hello";
上述内容会将s
声明为六个常量char
元素的数组,并使用字符串"Hello"
初始化内容。
答案 1 :(得分:1)
在C中,当一个限定符被添加到数组声明中时,它就会限定元素类型而不是数组本身。 C11部分:§6.7.3/ 9
如果数组类型的规范包含任何类型限定符,则元素类型是合格的,而不是数组类型。[...]
因此,无法声明const数据类型的 const数组。