Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用[]在C中声明指向常量字符数组的常量指针_C_Arrays_Pointers - Fatal编程技术网

如何使用[]在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";