Ich übergebe einen Zeiger eine Funktion, die es aktualisiert. Wenn die Funktion jedoch den Zeiger zurückgibt, kehrt sie zu dem Wert zurück, den sie vor dem Funktionsaufruf hatte.Aktualisieren von Zeigern in einer Funktion
Hier ist mein Code:
#include <stdio.h>
#include <stdlib.h>
static void func(char *pSrc) {
int x;
for (x = 0; x < 10; x++) {
*pSrc++;
}
printf("Pointer Within Function: %p\n", pSrc );
}
int main(void) {
char *pSrc = "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson.";
printf("Pointer Value Before Function: %p\n", pSrc );
func(pSrc);
printf("Pointer Value After Function: %p\n", pSrc );
return EXIT_SUCCESS;
}
Hier ist die Ausgabe
Pointer Value Before Function: 0x100403050
Pointer Within Function: 0x10040305a
Pointer Value After Function: 0x100403050
Was ich erwartet hatte der Wert nach der Funktion war es, die man passend innerhalb der Funktion.
Ich habe versucht, auf char **pSrc
zu wechseln, aber das hatte nicht die gewünschte Wirkung.
Ich bin sicher, die Antwort ist ziemlich einfach, aber ich bin ein Hardware-Ingenieur erholt und kann nicht scheinen, um es herauszufinden :-)
Sie müssen die * -Adresse * Ihres 'char * pSrc' übergeben, damit Sie ändern können, worauf' pSrc' zeigt (behalten Sie 'char * pSrc' bei, übergeben Sie es als' & pSrc', und nehmen Sie die Funktion '' char ** '. – crashmstr