"type var[]" 是什么意思?

What does "type var[]" mean?

我不小心写了这段代码:

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 显示相同的行为)。

在 var 名称后放置方括号将创建一个固定大小的数组。例如,如果您执行 string args[1],您将得到一个大小为 1 的数组。

在本教程的底部进行了简要讨论: https://chebizarro.gitbooks.io/the-vala-tutorial/content/arrays.html