Leeren String als Argument übergeben?

#1198640
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
>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
>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
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
>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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.