hallo, ich bin Anfänger. Wie kann man eine Adresse zuweisen. int *a, b; b = 28; a = &b; statt a= &b möchte ich gleich habe:n a=b(b=28 ist schon die Adresse); und dann den Inhalt an dieser Adresse ausgeben Beispiel: printf("Inhalt der Variablen a an der Adresse 28: %i\n", *a); printf(" Adresse b: %i\n", &b); Peter
peter schrieb: > hallo, > ich bin Anfänger. Wie kann man eine Adresse zuweisen. Bist du sicher, dass du das willst?
1 | int *a = (int*)28; |
Was geht denn nicht? int *a; Pointer auf int int b; Integer Variable int c; dito b = 5; a =&b; Pointer a auf die Adresse der Variablen b zeigen lassen c = *a; Der Wert der an der Adresse auf die a zeigt gespeichert ist, in c speichern. Jetzt ist c = 5. a = 312; Pointer a auf irgend eine Adresse richten
Hallo, ich bin nicht sicher, zwar bekomme ich was ich will, aber mit einer Warnung deswegen glaube ich, dass irgendwas nicht stimmt. struct read { uint32_t Adresse; uint32_t Inhalt; } ; extern struct read readFrame; extern struct read *ptr_read; Beispiel:ptr_read->Adresse = 0x28; Wenn ich die Funktion read ausführe, bekomme ich keine Fehler aber eine Warnung:assignment makes pointer from integer without a cast read(void) { uint8_t *rAdr_Reg; rAdr_Reg = ptr_read->Adresse; printf("Inhalt der Variablen a an der Adresse 28: %i\n", *rAdr_Reg); }
peter schrieb: > Wenn ich die Funktion read ausführe, bekomme ich keine Fehler aber eine > Warnung:assignment makes pointer from integer without a cast Und das mit gutem Grund. Eine Zahl ist nun mal keine Adresse. Eine Zahl ist erst mal nur eine Zahl. Aber mit einem Cast kannst du dem Compiler sagen: "Das ist schon ok. Ich möchte gerne, dass du mir diese Zahl als Speicheradresse auffasst. Ich übernehme die Konsequenzen und versichere an Eides statt, dass das ok ist."
1 | void read(void) |
2 | {
|
3 | uint8_t *rAdr_Reg; |
4 | rAdr_Reg = (uint8_t *)ptr_read->Adresse; |
5 | printf("Inhalt der Variablen a an der Adresse 28: %i\n", *rAdr_Reg); |
6 | }
|
Allerdings solltest du dich fragen, ob nicht eigentlich der Datentyp von Adresse in struct read nicht von vorneherein ein uint8_t* sein sollte.
hallo, wenn ich der Datentyp von Adresse in struct ändern will, wäre für mich kompliziert.Ich habe eine andere Funktion write, die dieser Datentyp benötigt. Aber im read Function überprufe ich zuerst ob (0XFF < ptr_read->Adresse) wenn ja, melde ich eine Fehler. Deswegen habe ich so deklariert uint8_t *rAdr_Reg;
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.