什么"输入var []"意思?

时间:2017-05-25 16:00:25

标签: arrays syntax vala

我意外地写了这段代码:

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

1 个答案:

答案 0 :(得分:2)

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

本教程底部简要讨论过: https://chebizarro.gitbooks.io/the-vala-tutorial/content/arrays.html