2012-12-04 2 views
0

J'ai pour mission de créer un programme très rapide. Jusqu'à présent, l'algorithme de Bruteforce et Backtrack fonctionnent, mais j'ai trouvé un programme C qui semble être plus rapide. Maintenant, j'ai essayé de le convertir de C en Java, mais je suis incapable de convertir les pointeurs, car je ne comprends pas ce qui se passe avec les pointeurs. Ce sont les lignes qui doivent être converties:Convertir un pointeur C en Java

Edit: Je l'ai mis à jour les conversions à ce que je l'ai compris:

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] ??????? 

Une solution serait bien, mais je vais essayer de trouver moi-même si vous pouvez m'expliquer ce qui se passe ici. Les pointeurs sont la raison pour laquelle je n'ai jamais vraiment appris c et C++.

Cordialement, Dennis Fischer

+3

lieu de pointeur, utilisez un index 'int'. – nhahtdh

+0

J'ai lu à ce sujet, mais je n'ai aucune idée de ce que je dois faire :). Supposons que pnStack est de type int: pnStack = aStack +1; Quel est le résultat enregistré dans pnStack maintenant? –

+1

Non, vous voulez que nIndex = 1 corresponde à pnStack = aStack + 1, sûrement. –

Répondre

2

A l'intérieur d'un tableau, interpréter un pointeur comme vous le feriez utiliser un index à l'intérieur du tableau. Le * signifie la valeur dans la position actuelle de l'index.

Alors

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

Probablement moins déroutant d'utiliser nStack ou quelque chose pour l'index, étant donné que ce n'est pas un pointeur. –

+0

@NicholasWilson oh, le côté droit était destiné à être Java donc pas de soucis sur les pointeurs :-) – SJuan76

+0

Cela semble bon jusqu'à présent. Cependant, l'application ne fonctionne toujours pas comme prévu. Pourriez-vous expliquer à quoi correspond la comparaison (conversion 6)? –

Questions connexes