ich übe gerade für meine Klausur Informatik für Ingenieure, es geht hauptsächlich um die Programmiersprache C.
Nun hab ich in einer Altklausur zwei Aufgaben zu Pointern gefunden und ich finde einfach keine Lösung für das Problem...
Gegeben sind die folgenden Programme:
Code: Alles auswählen
/* Programm 1 */
#include <stdio.h>
int main(){
char a[8];
char *b;
int i;
b = a;
for (i=0;i<8;i++){
*b++ = 0xff - i;
}
}
Code: Alles auswählen
/*Programm 2 */
#include <stdio.h>
int main(){
char x[4];
char *y;
char u[4];
char *v;
int i;
y = x;
for(i=0;i<4;i++){
*y++ = i%2;
}
v = u + (y-x);
while(v != u) {
*--v = *--y;
}
return;
}
Notieren Sie den Speicherinhalt an folgenden Adressen in 4 Blöcken a 1 Byte in Hexadezimaldarstellung, wenn das Programm vollständig durchlaufen wurde.
Code: Alles auswählen
Adresse | Byte 4 | Byte 3 | Byte 2 | Byte 1
0x00001000 | ... | ... | ... | ...
0x00001004 | ... | ... | ... | ...
0x00002000 | ... | ... | ... | ...
&v = 00004000
Ich verstehe an sich das grundlegende Prinzip von Pointern, aber mir ist schleierhaft wie sich die Speicherinhalte zusammensetzen sollen, außer beim zweiten Programm für die Adressen 0x00002000 und 0x00004000.
Ich wäre sehr dankbar, wenn mir jemand erklären könnte wie ich am besten bei einer Aufgabenstellung wie dieser vorgehen muss, um sie korrekt lösen zu können.
Konkret hakt es bei den Zeilen: Programm 1: *b++ = 0xff - i;
und bei Programm 2: for(i=0; i<4;i++){*y++ = i % 2;}
sowie while(v != ) { *--v = *--y;}
Ich verstehe nicht was diese Zeilen bewirken...
Mit freundlichem Gruß
wing354
Edit by Xin: Codetags hinzugefügt