printf () druckt das gesamte Array

8

Nehmen wir an, ich habe den folgenden Code in meinem C-Programm :

%Vor%

Warum würde das Ergebnis das ganze Wort "Hallo" anstelle eines einzelnen Zeichens "h" sein?

Ich verstehe jedoch, dass wenn ich ein "%c" in den Formatierer lege, wird nur ein einzelner Buchstabe gedruckt. Dennoch ist die Speicheradresse für jeden Buchstaben in dieser Adresse anders. Bitte, jemand erklärt es mir?

    
NullPointerException 06.06.2013, 12:30
quelle

2 Antworten

24
  

Trotzdem ist die Speicheradresse für jeden Buchstaben in dieser Adresse anders.

Die Speicheradresse ist unterschiedlich, aber als Array von Zeichen sind sie sequenziell. Wenn Sie die Adresse des ersten Elements übergeben und %s verwenden, druckt printf alle Zeichen ab der angegebenen Adresse, bis '%code%' gefunden wird.

    
Rohan 06.06.2013, 12:33
quelle
4

Im Falle von Arrays ist die Basisadresse (d. h. die Adresse des Arrays) die Adresse von das erste Element im Array. Der Array-Name fungiert auch als Zeiger.

Betrachten Sie eine Reihe von Häusern (jedes ist ein Element im Array). Um die Reihe zu identifizieren, Sie brauchen nur die Adresse des ersten Hauses. Sie wissen, dass jedes Haus von der nächsten (sequenziellen) gefolgt wird. Geben Sie die Adresse des ersten Hauses, gibt Ihnen auch die Adresse der Reihe.

Im Falle von String-Literalen (bei der Deklaration definierte Zeichen-Arrays) sind sie automatisch angehängt von printf .

%s wird mit dem Formatbezeichner und der angegebenen Adresse gedruckt. Seit dem verwenden Sie %code% es druckt von der ersten Adresse (inkrementiert den Zeiger unter Verwendung der Arithmetik) bis '\ 0'

    
Suvarna Pattayil 06.06.2013 12:44
quelle

Tags und Links