Hallo, ist es möglich, einer Funktion, die einen Pointer auf char erwartet, einen leeren String ("") zu übergeben? Bsp.: void foo (char *pstr) -> foo (""); Wenn ja, was macht der Compiler daraus? Ist "" eine Konstante mit dem Inhalt '\0'?
Nixwisser wrote: > ist es möglich, einer Funktion, die einen Pointer auf char erwartet, > einen leeren String ("") zu übergeben? Bsp.: void foo (char *pstr) -> > foo (""); Ja. > Wenn ja, was macht der Compiler daraus? Er übergibt der Funktion die Adresse einer im Speicher stehenden Null. PS: Ich hoffe nur, du denkst nicht, dass man diesen String dann in der Funktion irgendwie "füllen" könnte.
>Er übergibt der Funktion die Adresse einer im Speicher stehenden Null. 0 im Klartext ist also equivalent zum ASCII-Ende-Zeichen \0? >Ich hoffe nur, du denkst nicht, dass man diesen String dann in der >Funktion irgendwie "füllen" könnte. Nein ;)
Nixwisser wrote:
> 0 im Klartext ist also equivalent zum ASCII-Ende-Zeichen \0?
Nein, es ist nicht äquivalent, es ist dasselbe.
>Ich hoffe nur, du denkst nicht, dass man diesen String dann in der >Funktion irgendwie "füllen" könnte. Den Pointer könnte ich aber ändern, oder? Will heißen, innerhalb der Funktion dem übergeben Pointer einen anderen String zuweisen.
Nixwisser wrote: > Den Pointer könnte ich aber ändern, oder? Will heißen, innerhalb der > Funktion dem übergeben Pointer einen anderen String zuweisen. Ja, könntest du. Aber was hättest du davon? Das würde sich nur auf die Kopie des Pointers innerhalb der Funktion auswirken.
>Ja, könntest du. Aber was hättest du davon? Das würde sich nur auf die >Kopie des Pointers innerhalb der Funktion auswirken. Es wäre ja auch möglich, dass der Aufrufer einen Pointer mit leerem Inhalt definiert hat und diesen beim Aufruf übergibt. Dann müßte doch der Pointer überschrieben werden, falls ich ihn in der Funktion manipuliere, und dann auch in der aufrufenden Funktion zur Verfügung stehen.
Nixwisser wrote: > Es wäre ja auch möglich, dass der Aufrufer einen Pointer mit leerem > Inhalt definiert hat und diesen beim Aufruf übergibt. Dann müßte doch > der Pointer überschrieben werden, falls ich ihn in der Funktion > manipuliere, und dann auch in der aufrufenden Funktion zur Verfügung > stehen. Nein. Dazu müsstest du einen Pointer auf einen Pointer übergeben.
>Nein. >Dazu müsstest du einen Pointer auf einen Pointer übergeben. Verstehe. Danke.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.