Frage von tippa2, 22

C-Programmierung/Formatstrings?

Ich habe eine kurze Frage zu Formatstrings Man hat z.B. char string[10] int A = 100 printf("[A] %d, Adresse: %08x\n", A, &A); printf("[string] %s Adresse: %08x\n", string, string) warum muss ich bei A &A angeben, damit mir die Adresse ausgespuckt wird und beim string nicht? was bedeutet die Zahl die mir ausgegeben wird, wenn ich & bei A weglasse?

Antwort
von chokdee, 12

Du solltest dich mit Zeiger und Call by Value/Reference in C befassen.

Wird das & weggelassen, dann übergibst du den Wert und nicht die Referenz auf die Variable.

Kommentar von tippa2 ,

also Kapitel Zeiger hab ich schon bisschen, was gemacht. Mit einem * davor kann man ja einen Zeiger konstruieren, dieser enthält ja dann eine gewisse Zieladresse. In dem Buch das ich benutze steht als Erklärung dafür, dass string ein Zeiger ist und das %s eine Referenz braucht und das daher funktioniert. Aber wenn ich & bei string weglasse, sagst du übergibt man einen Wert, also ist das was am Ende bei [string] Adresse ruaskommen würde, überhaupt nicht die Adresse? Im Debugger wird mir sowohl für A, als auch string eh eine ganz andere Adresse gegeben, als bei Ausführung des Programms

Kommentar von tippa2 ,

Ich versuche meine Frage noch einmal zu präzisieren. int A=70 hier wird der Variablen ein gewisser ZAHLENwert gegeben. Habe ich einen pointer mit * enthält er die Zieladresse. Dies ist mir alles klar. Nun nehme ich z.B. char string[19] = "ich verstehe das nicht". Ich glaube, ich habe eine gewisse Grundlage nicht verstanden. String ist doch auch eine Variable und diese Variable hat für mich den ZEICHENwert "ich verstehe das nicht". Klar ich könnte jetzt meinem Gehirn sagen & braucht man nur bei int, um die Adresse zu bekommen, aber ich würde einfach gerne verstehen, wo mein Denkfehler ist!

Kommentar von chokdee ,

Ein string[] ist ein Array und hat damit mehrer Werte (char), die im Speicher hintereinander abgelegt werden. Lies dir mal Arrays und Zeiger in der Doku durch.

Kommentar von tippa2 ,

bin noch ein Laie, was meinst du mit DOKU? Danke schon mal für die Hilfe!!

Kommentar von chokdee ,

Doku=Dokumentation (Bücher)

Kommentar von tippa2 ,

ach und weil er mehrere Werte hat befindet sich nicht ein Wert an einer Stelle, sondern er fährt quasi die Speicherstellen hintereinander durch...okay mache ich;) danke schon mal für die HIlfe!


Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten