我没有制作特定的程序。我对C语言中的某种语法事物感到好奇。我做了这些声明。
int main()
{
char *titles[] = {"NUDGE", "DECOUPLEING", "WORLD WAR Z"};
char *letters[] = {{'a', 'b', 'c'}, {'x', 'y', 'z'}};
}
在第二个声明中,有3种警告。
我知道*numbers[]
这种东西应该在其中包含指针值。因为字符串类型是指针,所以第一个声明不显示警告吗?字符不是字符串吗?
+)“标量初始化器”在第一个和第三个警告中是什么意思?
+)
char titles[][] = {"NUDGE", "DECOUPLEING", "WORLD WAR Z"};
这显示什么错误,而第一个不显示错误?
我是C指针的初学者。请说明:)
第二次初始化是无效的,因为{'a', 'b', 'c'}
不是可以转换为指针的数组
您应该改用复合文字:
char *letters[] = {(char[]){'a', 'b', 'c'}, (char []){'x', 'y', 'z'}};
定义了两个(2)指向三个字符数组的指针的数组。