如何使用[]在C中声明const指针指向const字符数组

时间:2016-03-27 18:22:03

标签: c arrays pointers

const wikipedia article州:

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指针

2 个答案:

答案 0 :(得分:1)

你没有。首先s不是指针,因为它不是指针,你已经无法将数组更改为“指向”其他位置。

所以你需要的是使数组的内容保持不变:

const char s[] = "Hello";

上述内容会将s声明为六个常量char元素的数组,并使用字符串"Hello"初始化内容。

答案 1 :(得分:1)

在C中,当一个限定符被添加到数组声明中时,它就会限定元素类型而不是数组本身。 C11部分:§6.7.3/ 9

  

如果数组类型的规范包含任何类型限定符,则元素类型是合格的,而不是数组类型。[...]

因此,无法声明const数据类型的 const数组