如何使用[]在C中声明指向常量字符数组的常量指针
各国: 及 太好了 如果我使用如何使用[]在C中声明指向常量字符数组的常量指针,c,arrays,pointers,C,Arrays,Pointers,各国: 及 太好了 如果我使用[]而不是*来声明数组,这将如何应用?例如,如何打开以下各项: char s[] = "Hello"; 变成“指向常量的常量指针”?您没有。首先,s不是指针,因为它不是指针,所以您已经无法将数组更改为其他位置的“点” 因此,您只需将数组的内容设置为常量: const char s[] = "Hello"; 上面将s声明为六个常量char元素的数组,并使用C中的字符串“Hello”初始化内容,当一个限定符添加到数组声明中时,它将限定元素类型,而不是数组本身。C11
[]
而不是*
来声明数组,这将如何应用?例如,如何打开以下各项:
char s[] = "Hello";
变成“指向常量的常量指针”?您没有。首先,
s
不是指针,因为它不是指针,所以您已经无法将数组更改为其他位置的“点”
因此,您只需将数组的内容设置为常量:
const char s[] = "Hello";
上面将
s
声明为六个常量char
元素的数组,并使用C中的字符串“Hello”
初始化内容,当一个限定符添加到数组声明中时,它将限定元素类型,而不是数组本身。C11节:§6.7.3/9
如果数组类型的规范包含任何类型限定符,则元素类型是so限定的,而不是数组类型。[…]
因此,不可能声明常量数据类型的常量数组。数组不是指针,尽管它们在许多上下文中会衰减为指针。你不能分配整个数组,所以拥有一个head-const数组是没有意义的。@ColonelThirtyTwo所以这个问题就没有意义了?是最接近于不可变值的值
const char s[]=“Hello”
?@Ana数组不需要超过该值,因为数组名称本身无法更改。只有它的内容可以,并且您已经用const
声明阻止了它。@TomKarzes:对不起,这次我的坏消息:-),但是它是非常密切相关的。const char s[]=“Hello”
将s
声明为6个常量char
元素的数组。
char s[] = "Hello";
const char s[] = "Hello";