我意外地写了这段代码:
int main(string args[]) {
stderr.printf ("Usage: %s", args[0]);
return 1;
}
我的意思是:
int main(string[] args) {
stderr.printf ("Usage: %s", args[0]);
return 1;
}
不同之处在于参数的定义。奇怪的是valac
没有抱怨第一个版本。
那么,如果我说type var[]
而不是type[] var
,它对编译器意味着什么?
从生成的C代码中,似乎完全忽略括号。
同样在编译和运行此代码时会出现段错误。
PS:我的Vala版本是0.32.1(和0.34.8显示相同的行为)。
答案 0 :(得分:2)
在var名称后面放置括号将创建一个固定大小的数组。例如,如果您执行string args[1]
,则会获得大小为1的数组。
本教程底部简要讨论过: https://chebizarro.gitbooks.io/the-vala-tutorial/content/arrays.html