gpt4 book ai didi

c - 这个&符号在C语言中是什么意思?

转载 作者:行者123 更新时间:2023-11-30 20:58:53 25 4
gpt4 key购买 nike

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

但是方法名称前面的“&”符号是什么意思,例如“(void *)&Java_Test_description”?这是一个基本问题,抱歉我没有从互联网上找到任何有用的信息。我看到一些 JNI 指南只是使用这种方式,例如“(void *)Java_Test_description”,它不使用这个“&”符号。

jni.c 中的代码
static JNINativeMethod classTest_methods[] = {
{ "description", "()Ljava/lang/String;", (void *)&Java_Test_description },
{ "skip", "()Z", (void *)&Java_Test_skip },
{ "skip_reason", "()Ljava/lang/String;", (void *)&Java_Test_skip_reason },
{ "run_", "(I)Z", (void *)&Java_Test_run_ },
};

最佳答案

&返回其后面的实体的地址;在这种情况下,JNI 方法描述使用实现 native 方法的全局函数的地址。这些描述的列表将传递给 RegisterNatives() JNI 函数。

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

jboolean Java_Test_run_(int n);

C 编译器解析

(void *)Java_Test_run_ 

相同
(void *)&Java_Test_run_

关于c - 这个&符号在C语言中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com