TypeCast-Problem

Orca25

Grünschnabel
Hallo Leute,
habe ein kleines Problem mit einem TypeCast.
Code:
#include <stdio.h>
#include <stdlib.h>

unsigned char reg[4];

int main(int argc, char *argv[]){
  unsigned long al, bl, cl, dl;
  char *ta, *tb, *tc, *td;
  
  reg[0] = 0x70;
  reg[1] = 0x7F;
  reg[2] = 0x80;
  reg[3] = 0xFF;
  ta = & reg[0];
  tb = & reg[1];
  tc = & reg[2];
  td = & reg[3];
  al = *ta;
  bl = *tb;
  cl = *tc;
  dl = *td;
  printf("ac: %x; al: %x\n", reg[0], al);
  printf("ac: %x; al: %x\n", reg[1], bl);
  printf("ac: %x; al: %x\n", reg[2], cl);
  printf("ac: %x; al: %x\n", reg[3], dl);
  return 0;
}
Die Ausgabe des Ganzen sieht dann folgendermassen aus:
ac: 70; al: 70
ac: 7f; al: 7f
ac: 80; al: ffffff80
ac: ff; al: ffffffff

Aber warum?
Wenn ich denn Cast ohne Pointer mache, dann erhalte ich auch die richtigen Werte.
Wenn ich die Pointer unsigned deklariere geht es auch.
Aber ich verstehe das System nicht so ganz.
Ein Pointer enthält doch nur die Adresse des Wertes oder nicht?
Ich glaube ich werde Pointer nie verstehen. Es sei denn einer kann es mir erklären.
Gruß
Orca25
 
Zurück