2017-06-11 6 views
1

Ich habe C Sprache gelernt und ich habe einige Fragen.Wie lokalisiere ich die Adresse des Beginns des Speicherbereichs?

Wenn die Adresse des Beginns eines Speicherbereichs am besten gefunden wird, verwenden Sie Zeiger?

Zum Beispiel in wenigen Schritten

  1. Ich habe Variable int a = 1;
  2. Ich erkläre Zeiger auf Variable a: int *pointer_a;
  3. I zuweisen Variable einen zu Zeiger: pointer_a = a;
  4. Nun, ich möchte Adresse im Speicherbereich drucken: printf("Adress variable a= %p", &pointer_a);

Mache ich es richtig?

+1

'pointer_a = a' sollte nicht kompilieren. –

+0

Sie drucken die Adresse des Zeigers, nicht Ihre Variable 'a'. – ForceBru

+0

Es gibt keine portable Definition von "Beginn des Speichers" und keine tragbare Möglichkeit, herauszufinden, wo es sich befindet. – dasblinkenlight

Antwort

1

pointer_a sollte Speicheradresse der Variablen a halten, das ist, was Zeiger tun. soweit es sich um Zeiger handelt & ist die address of operator.

pointer_a = &a; 

und dann können Sie. printf("Address variable a = %p", pointer_a);

können Sie immer noch direkt printf("Address variable a = %p", &a);

+0

Jetzt verstehe ich meinen Fehler. Danke :) – geekcode

+1

'printf (" Adressvariable a =% p ", & pointer_a);' ** druckt ** nicht die Adresse von 'a'. Es druckt die Adresse des Zeigers, nicht die Adresse, auf die er zeigt. – SiggiSv

+0

@SiggiSv mein schlechtes. korrigiert. –

Verwandte Themen