Ich weiß, dass ptrChar
ein Zeiger auf char ist. Was ist der Befehl für einen Zeiger auf string ?
Edit: Wenn es dasselbe ist (ptr to char vs. ptr to string) - was stellt die folgende Variablendefinition dar?
%Vor%Ich bin verwirrt.
Die gleiche Notation wird verwendet, um auf ein einzelnes Zeichen oder das erste Zeichen einer nullterminierten Zeichenkette zu zeigen:
%Vor% Die Werte in ptr2
und ptr3
sind gleich; das gleiche gilt für die Werte in ptr4
und ptr5
. Wenn Sie einige Daten als Zeichenfolge behandeln möchten, müssen Sie sicherstellen, dass sie null terminiert ist und dass Sie wissen, wie viel Speicherplatz Sie verwenden können. Viele Probleme werden dadurch verursacht, dass man nicht versteht, welcher Speicherplatz verfügbar ist, und nicht wissen, ob der String ordnungsgemäß mit null beendet wurde.
Beachten Sie, dass alle oben genannten Zeiger dereferenziert werden können, als wären sie ein Array:
%Vor%Was bedeutet
char (*ptr)[N];
?
Das ist ein komplexeres Tier. Es ist ein Zeiger auf ein Array von N
-Zeichen. Der Typ ist ganz anders; die Art, wie es benutzt wird, ist ganz anders; Die Größe des Objekts, auf das gezeigt wird, ist ziemlich unterschiedlich.
Beachten Sie, dass ptr + 1
auf undefiniertes Gebiet zeigt, aber auf ein Array von 12 Bytes jenseits des Beginns von a
zeigt. Gegeben ein etwas anderes Szenario:
Jetzt:
%Vor%Sie werden wahrscheinlich nicht lange auf Zeiger auf Arrays stoßen, nur zufällig. Ich habe sie ein paar Mal in den letzten 25 Jahren benutzt, aber so wenige, dass ich die Gelegenheiten an den Fingern einer Hand zählen kann (und einige von ihnen haben Fragen zu Stack Overflow beantwortet). Abgesehen davon zu wissen, dass sie existieren, dass sie das Ergebnis sind, die Adresse eines Arrays zu nehmen, und dass Sie es wahrscheinlich nicht wollten, brauchen Sie nicht wirklich mehr über Zeiger auf Arrays zu wissen.
Die Zeichenfolge ist im Grunde von der Stelle, auf die sie zeigt ( char *ptrChar;
), bis zum Nullzeichen (
) beschränkt. Das char *ptrChar;
ptrChar[x]
zeigt tatsächlich auf den Anfang der Zeichenfolge (char-Array), und das ist also der Zeiger auf diese Zeichenfolge,
Wenn Sie also beispielsweise %code% mögen, greifen Sie tatsächlich x-mal nach dem Beginn des Charts auf den Speicherort zu (von dem aus ptrChar gerade verweist).
Eine C-Zeichenfolge ist nichts anderes als ein Array von Zeichen. Daher ist ein Zeiger auf eine Zeichenfolge ein Zeiger auf ein Array von Zeichen. Und ein Zeiger auf ein Array ist der gleiche wie ein Zeiger auf sein erstes Element. Die Zeichenfolge ist im Grunde von der Stelle, an die sie gerichtet ist (char * ptrChar;), bis zum Nullzeichen (\ 0) begrenzt.