2011-05-27 43 views
2

在下面的代码中,第一个和第二个const是什么意思?C语句常量含义

我想第一个或第二个手段foo是恒定的;另一个意思是foo的元素也是常量。这是真的吗?

static const char * const foo[] = {"bar", "baz"}; 
+0

【必读】(http://www.parashift.com/c++-faq-lite/const-correctness.html)。 – 2011-05-27 10:43:32

+0

我也试过了:const static const const char * const foo [] = {“bar”,“baz”};并编译没有问题与海湾合作委员会。我认为编译器会忽略额外的const。 – 2011-05-27 10:44:14

+0

有趣的,你可以添加尽可能多的,你想

 static const const const char * const const foo[] = {"bar", "baz"}; 
gcc给出也没有错误既不警告即使用-Wall -Wextra – 2011-05-27 10:52:31

回答

4

这意味着它的常量指针(所以不能改变指针)为const字符(这样不能更改经由字符数组指针)。这是在应用程序中定义固定字符串(如命令名称)的常用方法。

3

参见cdecl

declare foo as array of const pointer to const char