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
评论并不正确.的类型的s01
IS char [4]
,和类型的s02
和s03
是const char [4]
.当在表达式中使用而不是&
或sizeof
运算符的主题时,它们将分别评估类型的rvalues,char *
并const char *
指向数组的第一个元素.
你不能以这样的方式声明它们,使它们衰变为一个本身符合const的rvalue; 拥有一个const限定的rvalue并没有任何意义,因为rvalues不能被赋值.这就像是说你想要一个5
类型const int
而不是类型的常量int
.
归档时间: |
|
查看次数: |
15875 次 |
最近记录: |