这是什么&;符号在C中是什么意思?

这是什么&;符号在C中是什么意思?,c,java-native-interface,C,Java Native Interface,我在一个使用JNI的项目中得到以下代码。现在我可以理解这是一个结构数组,类型为jniationalMethod,第一个名称是Java代码中定义的方法(“description”,“run_u2;”…),第二个定义方法类型和返回类型,第三个是方法指针 但是,在方法名称之前,例如“(void*)和Java_Test_description),这个“&”符号是什么意思?这是一个基本问题,对不起,我没有从网上找到任何有用的信息。我看到一些JNI指南就是这样使用的,比如“(void*)Java_Test_

我在一个使用JNI的项目中得到以下代码。现在我可以理解这是一个结构数组,类型为jniationalMethod,第一个名称是Java代码中定义的方法(“description”,“run_u2;”…),第二个定义方法类型和返回类型,第三个是方法指针

但是,在方法名称之前,例如“(void*)和Java_Test_description),这个“&”符号是什么意思?这是一个基本问题,对不起,我没有从网上找到任何有用的信息。我看到一些JNI指南就是这样使用的,比如“(void*)Java_Test_description”,它没有使用这个“&”符号

jni.c中的代码
返回其后面实体的地址;在本例中,JNI方法描述使用实现本机方法的全局函数的地址。这些描述的列表将传递给RegisterNatives()JNI函数

在这种情况下,可以省略,因为对于函数

jboolean Java_Test_run_(int n);
C编译器解析

(void *)Java_Test_run_ 

(void *)&Java_Test_run_

该符号是地址运算符。在任何变量之前使用它将返回后者的内存地址

例如,当您希望避免处理由函数创建的变量副本时,它非常有用


请参阅通过值传递与通过引用/地址传递:

它在JNI中没有任何意义。JNI是一个API。它在您正在编程的语言中表示某种东西,它似乎是C。在本例中,当您使用函数地址时,它实际上没有任何意义。谢谢您的回复,@EJP。我的表达式不准确,我的意思是这个“&”符号出现在jni.c中。我不知道它在做什么。它们最好不是函数地址,因为函数指针和数据指针之间的转换在C中没有意义。谢谢,@Alex Cohn。从你所说的,我想我可以把它们当作带或不带“&”符号一样对待。
(void *)&Java_Test_run_