参数名称后面的Java方括号;int g[]”;?
我必须将代码从Java翻译成OpenCL 我用Java给出了这个函数:参数名称后面的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[]参数是什么?我以前从未见过这种情况,也没有发现任何关于“参数名后的方括号”的内
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)这里是code>,因为它只传递一个索引
假设你有一个数组
arr[10]
,你可以写dot(arr,x,y,z)用Java编写代码>,编写此
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是一个二维锯齿阵列:[]。加上你的解释,这是有道理的。