为什么有必要在C中的字符串数组中声明字符串的长度?

时间:2014-05-10 23:21:32

标签: c arrays string declaration

为什么编译器可以知道有多少字符串,但不知道它们包含多少字符? 例如,这有效:

char songs[][30]{ 
  "A string", 
  "Another string" 
}; 

而且这个没有:

char songs[][]{ 
  "A string", 
  "Another string" 
};

1 个答案:

答案 0 :(得分:4)

如果对常量字符串没问题,那么就不行。

const char *strings[] = {
    "foo",
    "bar",
    "baz",
    "quux",
};

如果你想要制作一个char s的二维数组,那么你需要给它字符串长度的唯一时间就像

一样
char strings[][5] = {
    "foo",
    "bar",
    "baz",
    "quux",
};

C可以猜测最外层维度,但数组中的项目必须是完整类型,并且未知长度的char数组不完整,但char[5]和{{1}都是是的。