const char*** 是什么意思,它如何从 C 翻译成 Java?

What does const char*** mean and how does it translate from C to Java?

我正在使用 JNAC++ 编写的 DLL 编写 Java 接口,用于控制小型设备。

在翻译数据类型时我遇到了

const char*** someVariable

谁能给我解释一下这是什么意思以及如何在 Java 中重新创建它?

我已经阅读了有关指针的内容,我正在使用 JNA 文档将 C++ 类型映射到 Java,但我找不到对末尾带有三个星号的类型的引用。

这应该被解释为指向字符串数组的指针吗?

如果你知道指针的概念,

const char*** 表示是三重指针,所以可以这么想:

const char***--->const char**--->const char*--->const char

所以是的,它可以解释为指向字符串数组的指针,因为字符串数组可以解释为双指针。

假设 a 是一个字符串数组:

const char *a[15];

在这种情况下 **a 会给出 a.

中第一个字符串的第一个字符

您可以声明:

const char ***b = &a;

在这种情况下 ***b 会给出 a.

中第一个字符串的第一个字符

可能的解释是,您应该传入一个指针的地址,而在return上,该指针将是一个 C 字符串数组.

这不是唯一可能的解释,但可能是最有可能的解释。如果本机签名还要求指向整数的指针,它将写入 returned 数组的长度,则尤其如此。

要从 JNA 使用它:

PointerByReference pref = new PointerByReference();
IntegerByReference iref = new IntegerByReference();
nativeLib.call(pref, iref);
String[] strings = pref.getValue().getStringArray(0, iref.getValue());

如果未指定长度,JNA 将查找标记字符串数组结尾的 NULL 值。