2017-01-11 3 views
-1

Ich verstehe, dassIn GDB, was macht * (x + value) = Wert?

* = dereferenzieren

*x = dereferenzierenden x den Wert in x greifen, wenn x ein Zeiger ist.

*x = 5, x = 5 setzen, wenn x ein Zeiger ist und eine Variable x existiert.

Was macht der + Wertteil hier?

Ie. 

x = 5 

*ptr; 

ptr = &x 

*ptr gives us 5. 
+1

Erstens gibt es kein '* x' in dem von Ihnen geposteten Snippet. Zweitens, "* x = 5" setzt "x" nicht auf "5", es setzt "* x" auf "5". – AnT

+0

Das ist normale C-Syntax. Über die Details sollten Sie Ihr C-Buch konsultieren. – Olaf

Antwort

2

x + 5 fügt 5*sizeof(*x) auf den Wert von x und dereferenziert dieser Stelle.

*(x + 5) entspricht genau x[5].

+0

also, wenn es x + 1 wäre, dann würde 1 * sizeof (* x) nur die Basisadresse für x ergeben. Vielen Dank! – TigerCode

+0

@TigerCode Eigentlich '0 * sizeof (* x)', wenn zu 'x' hinzugefügt, gibt Ihnen die Basisadresse. – dbush