7 c
我看到了两个:
const char* arr = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
和
const char* arr[] = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
什么是正确的,通常标准的方式?
两个有什么区别?
有什么区别
const char**arr = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
和
const char* arr[] = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
和
const char* * const arr = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
和
const char* const * const arr = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
抱歉这么多问题,只是想更好地理解它......
CB *_*ley 12
这是不正确的,因为它没有正确的间接级别.
const char* arr = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
这是不正确的,因为它缺少了=.它看起来有点像函数定义.
const char* arr[] {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
这是通常的正确形式.
const char* arr[] = { "foo", "bar" };
Run Code Online (Sandbox Code Playgroud)
编辑
您无法初始化聚合初始值设定项的指针(即{...,...,...}).你可以做到这两点
const char* str1 = "A string";
Run Code Online (Sandbox Code Playgroud)
和
const char str2[] = "Another string";
Run Code Online (Sandbox Code Playgroud)
但这是不同的.
字符串文字的类型为'n of char',因此可以转换为指针,而初始化列表实际上不是数组,它只是初始化数组的一种方法.
关于constness ...
const char* constValue = "foo";
constValue = "bar";
constValue[0] = 'x'; // will not work
char* const constPtr = "foo";
constPtr = "bar"; // will not work
constPtr[0] = 'x';
const char* const arr[] = { "foo", "bar", 0 }; // all const
Run Code Online (Sandbox Code Playgroud)
'const char * const'通常是完全恒定的东西的最佳解决方案。如果在本地作用域中声明此静态变量,则还要进行优化。0 ptr对于标记值很有用。