这是一道C题:
我不明白为什么这段代码有效:
char *c[] = {"hello","world"};
但这并没有:
int *v[] = {{1,2},{3,4}};
对我来说,它们是相同的东西(用各自类型初始化的指针数组),但显然它们不是。那么到底有什么区别呢?谢谢。
编辑:如果对我的帖子投反对票的人可以说出为什么这是一个糟糕的问题......那就太好了。
假设您正在谈论 C,则差异是:
-
"hello"
定义一个字符数组
- 数组可以衰减为指针
However:
-
{1,2}
没有定义数组int
s。它指定一个值列表,可以用作类型字段的初始值设定项int
(或敞篷车)。
类似的情况为int
将使用复合数组文字:
int *v[] = { (int[]){1,2}, (int[]){3,4} };
复合文字默认为可写(与字符串文字不同),因此您可以v[0][0] = 5;
,你不能用char
版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)