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

参数名称后面的Java方括号;int g[]”;?,java,arrays,parameter-passing,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; } 这是一个可能的呼叫: dot(g[i], x, y, z); dot(g[i], x, y, z); 其中:i=int和g=int的常用数组 这个奇怪的intg[]参数是什么?我以前从未见过这种情况,也没有发现任何关于“参数名后的方括号”的内

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

我用Java给出了这个函数:

float dot(int g[], double x, double y, double z) {
    return g[0]*x + g[1]*y + g[2]*z;
}
这是一个可能的呼叫:

dot(g[i], x, y, z);
dot(g[i], x, y, z);
其中:
i=int
g=int的常用数组

这个奇怪的
intg[]
参数是什么?我以前从未见过这种情况,也没有发现任何关于“参数名后的方括号”的内容


我能想象的唯一一件事是,这是某种偏移量,比如它将
g[0]*x
转换为
g[I+0]*x

int g[]
在参数中意味着将整型数组作为参数传递。所以你不能做点(g[i],x,y,z),因为它只传递一个索引


假设你有一个数组
arr[10]
,你可以写
dot(arr,x,y,z)

,编写此

int[] a;
…与…相同

int a[];
帮助C/C++程序员更容易地采用Java语言(和端口代码),这是Java早期的遗留问题

Java允许声明,例如

int a, b, c[];
…但这是不鼓励的(因为这是C/C++遗留问题)

在Java中,约定是远离这一点,每行有一个声明,即

int a;
int b;
int[] c;
这个奇怪的int g[]参数是什么

这只是编写
int[]g
的另一种方式,其含义完全相同:参数类型为
int[]
,因此需要是对
int
数组的引用。发件人:

[]
可能作为类型的一部分出现在声明的开头,或者作为特定变量的声明符的一部分出现,或者两者都出现

关于您的电话:

这是一个可能的呼叫:

dot(g[i], x, y, z);
dot(g[i], x, y, z);
其中:
i
=
int
,和
g
=通常的
int
数组

不,正如您发现的那样,这是不可能的您需要传入数组引用,而不是
int
,因此可能:

dot(g, x, y, z);

可以查找后,可以看到g是一个二维锯齿阵列:[]。加上你的解释,这是有道理的。