这是一个C问题:
我不明白为什么这段代码有效:
char *c[] = {"hello","world"};
Run Code Online (Sandbox Code Playgroud)
但这并不是:
int *v[] = {{1,2},{3,4}};
Run Code Online (Sandbox Code Playgroud)
对我来说,它们是相同的东西(用各自类型初始化的指针数组)但显然它们不是.什么是exaclty那么差异呢?感谢名单.
编辑:如果对我的帖子投降的人可以说为什么这是一个糟糕的问题...这将是伟大的.
假设你在谈论C,差异是:
"hello" 定义一个字符数组然而:
{1,2}没有定义ints 的数组.它指定了一个值列表,可用作类型int(或可转换)字段的初始值.类似的情况int是使用复合数组文字:
int *v[] = { (int[]){1,2}, (int[]){3,4} };
Run Code Online (Sandbox Code Playgroud)
复合文字默认是可写的(不像字符串文字),所以你可以去v[0][0] = 5;,你不能用char版本.