2017-03-04 5 views
-2

Ich habe den folgenden Code:Ist es möglich, Funktionen auf einem Zeiger zu verwenden?

int n =3; 
int A[n] = {3,2,1}, B[n], C[n]; 

han(n, A, B, C); 
//-------------- 
void han(int disk, int source[], int target[], int spare[]) 
{ 
    ...  
    target[target -> end()] = source -> back(); 
    source -> back() = 0; 
// error : request for member 'end' in '* target', which is of non-class type 'int' 
    ...  
} 

Ich weiß, dass innerhalb hanint target[] ein Zeiger ist. Gibt es eine Möglichkeit target.end() und source.back() innen han zu benutzen?

+0

Nein, gibt es nicht so etwas, anders als in Java, Actionscript, etc. Um das letzte Element zu wissen, wo ist, Sie ein Argument hinzufügen sollten sagen, wie groß Ihr Array ist. Siehe Abschnitt "Arrays als Parameter" in [dieses Tutorial] (http://www.cplusplus.com/doc/tutorial/arrays/). Sie könnten stattdessen auch [Vektoren] (http://www.cplusplus.com/reference/vector/vector/vector/) verwenden. Sie können 'myVect.back()' auf einem Vektor verwenden. –

+0

Was ist los mit Dingen wie 'target [disk-1]'? –

Antwort

1

Gerade Antwort nein. Besser weg mit Vektoren für solche Fälle.

0

Ich weiß, dass innerhalb hanint target[] ein Zeiger ist. Gibt es eine Möglichkeit target.end() und source.back() innen han zu benutzen?

Nein. Zeiger haben keine Elementfunktionen, Sie können also nicht so etwas tun. Ein Zeiger enthält die Adresse eines Objekts im Speicher. Nicht mehr, nicht weniger. Es ist unmöglich, ein Ende eines Integer-Arrays zu finden, indem nur ein Zeiger auf ein Element des Arrays verwendet wird. Sie müssen die Größe wissen.

Verwandte Themen