Pointer Operationen



  • Hallo, ich habe folgendes Problem mit einem Pointer.
    Folgendes ist definiert:

    unsigned char buffer[25][50];
    unsigned char *p__buffer;
    p_buffer = &buffer[0][0];

    D.h. es ist ein mehrdim. char Feld angelegt worden, sowie ein Pointer, welcher auf das erste Element zeigt.
    Adresse der ersten Elements sei z.B. 0002F2E3 (-> somit 32 Bit).

    Nun möchte ein Teil der ersten 16 Bit der Adresse in eine Variable, sowie die letzten 16 Bit eine andere Variable kopieren.
    A = 02 (die ersten beiden Nullen abgeschnitten)
    B = F2E3

    Hat jemand eine Ahnung wie ich solch eine operation mit einem
    Pointer machen kann? Bitmanipulationen verurachen Fehlermeldungen,
    sind also nicht möglich.

    Gruß
    Marco



  • a = p_buffer >> 16;
    b = p_buffer & 0xFFFF;
    


  • Das hab ich selber schon probiert, mag der Compiler aber nicht:

    '>>': invalid left operand type
    '&': incompatible types



  • Dann caste halt vorher noch auf size_t (gibts das im Standard überhaupt? Wenn nicht, gibts ja noch int/long/long long)



  • Wenn schon, dann unsigned int/unsigned long. Es gibt in C99 auch ein intptr_t (ich glaub, so heißt das) für diese Zwecke.


Anmelden zum Antworten