Wie kann ich-pass-Zeichen-Zeiger Referenz auf die Funktion und bekommen betroffen-Wert zurück?
In diesem code, den ich übergeben ein Zeichen Zeiger Referenz auf Funktion testen
und in der Funktion zu testen, habe ich malloc Größe und schreiben von Daten auf dieser Adresse und nach das ich es zu drucken und bekam null-Wert.
#include <stdio.h>
#include <stdlib.h>
void test(char*);
int main()
{
char *c=NULL ;
test(c);
printf("After test string is %s\n",c);
return 0;
}
void test(char *a)
{
a = (char*)malloc(sizeof(char) * 6);
a = "test";
printf("Inside test string is %s\n",a);
}
Ausgabe:
Inside test string is test
After test string is (null)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht einfach übergeben Sie den Mauszeiger in. Sie müssen übergeben Sie die Adresse des Zeigers statt. Versuchen Sie dies:
Die Argumentation ist, dass die Zeiger durch Wert übergeben wird. Das bedeutet, dass es kopiert wird in die Funktion. Dann überschreiben Sie die lokale Kopie innerhalb der Funktion mit malloc.
So, um zu bekommen, die Sie brauchen, um passieren die Adresse des Zeigers statt.
*a = "test";
Linie ist die tatsächliche Leckstelle.HeY Sam hinter der char-pointer c in code
aber wo, wie senden Sie die Adresse des charecter variable.
Hier macht dies eine differece in Ihrem code, so dass nur versuchen, diese änderung im code und führen Sie es aus.