【发布时间】:2011-03-31 06:21:27
【问题描述】:
我正在尝试将复合文字分配给变量,但它似乎不起作用,请参阅:
int *p[] = (int *[]) {{1,2,3},{4,5,6}};
我在 gcc 中遇到错误。
但如果我只写这个:
int p[] = (int []) {1,2,3,4,5,6};
那就没事了。
但这不是我想要的。
我不明白为什么会发生错误,因为如果我像数组一样初始化它,或者将它与字符数组的指针一起使用,没关系,请参阅:
int *p[] = (int *[]) {{1,2,3},{4,5,6}}; //I got a error
int p[][3] = {{1,2,3},{4,5,6}}; //it's okay
char *p[] = (char *[]) {"one", "two"...}; // it's okay!
请注意,我不明白为什么我在第一种形式中出现错误,请我不能,或者我不想像第二种形式那样写,因为它需要是复合文字,我不'不想说编译器的数组有多大。我想要第二个类似的东西,但是对于 int 值。
提前致谢。
【问题讨论】:
-
为什么需要在一个语句中初始化这些数组?
-
如果我理解了这个问题,它会简化事情,例如,我可以将 va_args 交换为复合文字......
-
您多次声明您遇到错误,但从未告诉我们错误是什么。学徒,你什么都没学到吗?
-
int p[] = (int []) {1,2,3,4,5,6};在 Linux 上使用 gcc 4.8.2 时出现一些错误。错误是“从非常量数组表达式初始化的数组”。你的 gcc 版本是多少?
标签: c compound-literals