gpt4 book ai didi

java - 将 C 指针转换为 Java

转载 作者:行者123 更新时间:2023-11-30 14:22:29 25 4
gpt4 key购买 nike

我的任务是创建一个非常快的 nqueens 程序。到目前为止,Bruteforce 算法和 Backtrack 都可以工作,但我发现一个 C 程序似乎更快。现在我尝试将它从 C 转换为 Java,但是我无法转换指针,因为我不明白指针发生了什么。这些是必须转换的行:

编辑:我已将转换更新为我所理解的内容:

final int[] aStack = new int[MAX_BOARDSIZE * 2];
int bitfield; //That's what I've got so far


//Conversion 1:
register int* pnStack; -> int pnStack;

//Conversion 2:
pnStack = aStack + 1; -> pnStack = 1;

//Conversion 3:
pnStack = aStack + 1; -> pnStack = 1;
*pnStack++ = 0; -> aStack[pnStack++] = 0;

//Conversion 4:
bitfield = *--pnStack; -> bitfield = aStack[--pnStack];

//Conversion 5:
*pnStack++ = bitfield; -> aStack[pnStack++] = bitfield;

//Conversion 7:
pnStack == aStack -> pnStack == aStack[0] ???????

一个解决方案会很好,但如果你能解释一下这里发生了什么,我会尝试自己找到它。指针是我从未真正学习过 c 和 c++ 的原因。

问候,丹尼斯·费舍尔

最佳答案

在数组内部,解释指针就像在数组内部使用索引一样。

* 表示索引当前位置的值。

所以

pnStack = aStack;  <-- int pnStack = 0;
pnStack++; <-- pnStack++;
bitfield = *pnStack <-- bitfield = aStack[pnStack];
bitfield = *--pnStack <-- bitfield = aStack[--pnStack]; (first decrement index, then retrieve the value)

关于java - 将 C 指针转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13700969/

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