Leeren String als Argument übergeben?

#1198640
Lesenswert?
• ▲
▼
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.
Gast #1198645
Lesenswert?
• ▲
▼
>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 ;)
Gast #1198658
Lesenswert?
• ▲
▼
>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.
#1198662
Lesenswert?
• ▲
▼
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.
Gast #1198838
Lesenswert?
• ▲
▼
>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.
#1198884
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren