PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iterieren durch buffer



gorba
12-12-2006, 15:06
hallo

hab gerade eine (vorerst für mich) vollkommen komische Deklaration gesehen:

uint8_t buf[1];

wer macht ein Array mit nur einem Element? =) Nun, Evt. ist die Deklaration gar nicht so doof, den jeder der sie anschaut denkt, wth hat der sich dabei gedacht.

Das Ding dient dazu, Byteweise durch einen buffer zu iteriern. Da byteweise für mich auf ein char Array passt, hab ich mich beschlossen, dieses als buffer zu verwenden.

Nun wollte ich die Anfangsadresse meines Arrays in das buf[0] speichern, so, dass diese in einem Struct immer verfügbar ist.

Wie aber bringe ich eine Adresse in einen uint8_t ? Macht das überhaupt Sinn? Adressen sind doch immer 4 Byte gross. Das uint8_t buf[1] muss ich leider verwenden.

Meine Frage: Bringt man die Adresse eines char Arrays irgendwie in den uint8_t?

greez

peschmae
12-12-2006, 16:39
Nein, nicht auf einer 32-Bit Architektur. Wenn ich richtig verstanden habe was du willst (d.h. eigentlich willst du einen uint8_t-Pointer, oder?)

MfG Peschmä

gorba
13-12-2006, 08:49
stimmt!!

Nun überlege ich mir:
- s is n array mit einem uint8_t element.
- ... hmm .... array? ... string? .... pointer? ..
- ... hat das array selber nicht auch eine adresse, in der man gegebenenfalls eine adresse reinspeichern könnte? Dadurch kann ich nicht mehr auf den uint8_t zugreifen, aber den brauche ich so oder so nicht.

Sollte klappen oder?

peschmae
13-12-2006, 10:04
Das Array hat eine Adresse. Ja. Jedes Ding im Speicher hat eine Adresse. Aber eine solche Adresse ist Compile-Time-Constant oder wie man das auch immer sagen soll.
d.h. das ist eine fixe Zahl zur Kompilierzeit, im Gegensatz zu einem Pointer, der eine Variable ist in der du eine Adresse speichern kannst. (Der Pointer selber btw, hat auch eine Adresse. Die wiederum ist auch konstant.)

MfG Peschmä

gorba
13-12-2006, 10:10
ok... wider nichts.
Nun, dan komme ich nicht um einen pointer pointer rum...
Ich versuche die Dinger möglichst zu vermeiden, da ich ansonsten jedes mal Zeit verbrate mit der Frage auf welcher Adresse ich momentan arbeite =(

peschmae
13-12-2006, 22:13
Naja, das was du willst *ist* ein Pointer. Ob die Deklaration dazu wie ein Pointer aussieht (was geht) oder wie ein Array mit einem Element (arrgh, und geht nicht) ist doch egal, oder? ;)

MfG Peschmä

gorba
15-12-2006, 11:52
richtig =)
thx für die Hilfe