参数名称"int g []"后面的Java方括号?

Pir*_*nha 0 java arrays parameter-passing

我必须将代码从Java翻译成OpenCL

我在Java中给出了这个函数:

float dot(int g[], double x, double y, double z) {
    return g[0]*x + g[1]*y + g[2]*z;
}
Run Code Online (Sandbox Code Playgroud)

这是一个可能的电话:

dot(g[i], x, y, z);
Run Code Online (Sandbox Code Playgroud)

哪里:i = intg = usual array of int.

这个奇怪的int g[]参数是什么东西?我以前从未见过这个,也没有找到任何关于"参数名后面的方括号"的内容.

我唯一可以想像,这是某种形式的偏移事情,就像它转换g[0]*xg[i+0]*x

Bre*_*etC 6

在Java中,写这个......

int[] a;
Run Code Online (Sandbox Code Playgroud)

...是相同的...

int a[];
Run Code Online (Sandbox Code Playgroud)

从Java早期开始就是一个宿醉,以帮助C/C++程序员更容易地采用这种语言(和端口代码).

Java允许声明,例如......

int a, b, c[];
Run Code Online (Sandbox Code Playgroud)

...但是这是不鼓励的(因为它是C/C++宿醉).

在Java中,惯例是远离这个并且每行有一个声明,即......

int a;
int b;
int[] c;
Run Code Online (Sandbox Code Playgroud)