Zeiger < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:05 Sa 23.01.2010 | Autor: | nana |
Hallo, nur eine ganz kleine Frage zu zeigern:
also normalerweise wird ja einem zeiger ein wert (also bzw eine Adresse so zugeordnet:
int* y = & x,
kann man denn auch y eine bel adresse zuordnen (ich weiß dass das keinen sinn machen würde weil man ja nicht weiß was dort abgespeichert ist, aber so könnte man es doch herausfinden, oder? also ich meine das dann so:
int* y = 2004;
cout << *y;
Hoffe das war jetzt keine allzu blöde Frage, danke!!
|
|
|
|
Hallo nana,
> kann man denn auch y eine bel adresse zuordnen (ich weiß
> dass das keinen sinn machen würde weil man ja nicht weiß
> was dort abgespeichert ist, aber so könnte man es doch
> herausfinden, oder? also ich meine das dann so:
> int* y = 2004;
> cout << *y;
Ich denke, daß das vom Compiler abhängt. Unter g++ 3.4.4 wurde bei mir folgender Code akzeptiert:
1: | #include <iostream>
| 2: | using namespace std;
| 3: |
| 4: | int main(int argc, char* argv[]) {
| 5: | int* tst = (int*)2004;
| 6: | cout << tst;
| 7: | return 0;
| 8: | } |
Die Ausgabe war:
Und [mm]\texttt{7d4}_{16}=\texttt{2004}_{10}[/mm]. Allerdings könnte eine Dereferenzierung von tst, also *tst, zu unvorhersehbaren Ergebnissen (bis hin zu einem Programmabsturz) führen, weil du, wie du ja schon selber sagst, nicht weißt, was an der Stelle abgespeichert ist.
Viele Grüße
Karl
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:37 Sa 23.01.2010 | Autor: | nana |
Okay, vielen Dank für deine schnelle Antwort, ich denke ich werde einfach auf solche Zuweisungen verzichten ;) ....
Lg, nana
|
|
|
|