kev*_*rpe 4 c arrays pointers const char
我试图理解数组声明,constness及其生成的变量类型.
允许以下内容(由我的编译器):
char s01[] = "abc" ; // typeof(s01) = char*
const char s02[] = "abc" ; // typeof(s02) = const char* (== char const*)
char const s03[] = "abc" ; // typeof(s03) = char const* (== const char*)
Run Code Online (Sandbox Code Playgroud)
或者,我们可以手动声明数组大小:
char s04[4] = "abc" ; // typeof(s04) = char*
const char s05[4] = "abc" ; // typeof(s05) = const char* (== char const*)
char const s06[4] = "abc" ; // typeof(s06) = char const* (== const char*)
Run Code Online (Sandbox Code Playgroud)
如何获得类型的结果变量const char* const?以下是不允许的(由我的编译器):
const char s07 const[] = "abc" ;
char const s08 const[] = "abc" ;
const char s09[] const = "abc" ;
char const s10[] const = "abc" ;
const char s11 const[4] = "abc" ;
char const s12 const[4] = "abc" ;
const char s13[4] const = "abc" ;
char const s14[4] const = "abc" ;
Run Code Online (Sandbox Code Playgroud)
谢谢
const char *const s15 = "abc";
Run Code Online (Sandbox Code Playgroud)
你的第一个typeof评论并不正确.的类型的s01IS char [4],和类型的s02和s03是const char [4].当在表达式中使用而不是&或sizeof运算符的主题时,它们将分别评估类型的rvalues,char *并const char *指向数组的第一个元素.
你不能以这样的方式声明它们,使它们衰变为一个本身符合const的rvalue; 拥有一个const限定的rvalue并没有任何意义,因为rvalues不能被赋值.这就像是说你想要一个5类型const int而不是类型的常量int.