【发布时间】:2020-06-11 18:59:49
【问题描述】:
我没有制作特定的程序。我对 C 语言中的某种语法问题感到好奇。
我做了这些声明。
int main()
{
char *titles[] = {"NUDGE", "DECOUPLEING", "WORLD WAR Z"};
char *letters[] = {{'a', 'b', 'c'}, {'x', 'y', 'z'}};
}
在第二个声明中,有 3 种警告。
- 标量初始化器周围的大括号
- 初始化使指针从整数而不进行强制转换
- 标量初始化器中的多余元素
我知道*numbers[] 之类的东西应该有指针值。
第一个声明是否因为字符串类型是指针而没有显示警告?
并且字符不是字符串?
+) 'scalar initializer' 在第一个和第三个警告中是什么意思?
+)
char titles[][] = {"NUDGE", "DECOUPLEING", "WORLD WAR Z"};
这是什么显示错误而第一个没有显示错误?
我是 C 指针的初学者。请解释:)
【问题讨论】:
-
char *titles[] = {"NUDGE", "DECOUPLEING", "WORLD WAR Z"};不显示错误,因为它是一个有效的声明。 -
char titles[][]是chars 的二维数组。可以这样使用,例如:char titles[][] = {{'A', 'B', 'C'}, {'X', Y'', 'Z'}}.