2022-06-15
Max. 24 points
Name:
Task | Max. | Achieved |
---|---|---|
1 | 4 | |
2 | 10 | |
3 | 5 | |
4 | 5 | |
Sum | 24 |
Aussage | Wahr | Falsch |
---|---|---|
Ein struct in C ist ein Pointer zu
einem Array. | ||
Ein struct darf Pointer beinhalten. | ||
Ein Pointer kann auf einen anderen Pointer zeigen. | ||
Header Dateien werden durch den Assembler mit den C Dateien verbunden. | ||
malloc(.) initialisiert den reservierten
Speicher mit Nullen. | ||
Ein Pointer zeigt auf eine Adresse im Hauptspeicher (RAM) des Computers. | ||
Das Aufteilen eines Programms auf mehrere Sourcecode Dateien verlängert die Kompilierzeit drastisch. | ||
Der C Compiler übersetzt C Code in Assembly. |
int main()
ausgeführt und
alle notwendigen #include
s sind vorhanden.
Wenn das Snippet nicht kompilierbar ist oder zu einem Absturz führen würde,
so ist das Wort “ERROR” als Antwort zu geben.
Erzeugt das Snippet keinen Output (wenn beispielsweise kein
printf
oder dergleichen aufgerufen wird), so ist "-" als
richtige Antwort zu verwenden.
int a = 3;
int* ptr = &a;
*ptr += 4;
printf("%d\n", a);
int a = 3;
int* ptr = &a;
int** p = &ptr;
**p += **p;
int array[] = {3, 3, 3, 3, 3};
int* array_ptr = array;
int count = sizeof(array) / sizeof(int);
int value = 0;
while (count--) {
value += *array_ptr++;
}
printf("%d\n", value);
char name[] = "Pat";
char* name_ptr = name;
while (*name_ptr) { // string ends with the `\0` character
printf("%c", *name_ptr);
name_ptr++;
}
printf("\n");
typedef struct {int year; int month; int day;} IsoDate;
IsoDate date = {2022, 2, 1};
printf("%s\n", date);
int* range(int start, int stop);
welche einen Pointer zu einem
Array mit aufsteigenden Zahlen zurück gibt. Der erste Wert des Arrays ist
start
, der letzte stop - 1
. Die Anzahl der
Elemente ist dementsprechend stop - start
. Zum Beispiel gibt
der Aufruf range(3, 8)
einen Pointer zu folgendem Array
zurück: {3, 4, 5, 6, 7}
.
int* range(int start, int stop) {
int* array = (int*) malloc((stop - start) * sizeof(int));
for (int i = 0; i < stop - start; ++i) {
array[i] = start + i;
}
return array;
}
Resistor
, welcher folgende
Eigenschaften speichert: unsigned int resistance
,
unsigned int max_voltage
,
float tolerance
und
char type[50]
. Reserviere Speicher auf dem Free Store für
einen neuen Resistor
und speichere einen Pointer darauf in der
Variable Resistor* r
.
typedef struct resistor Resistor;
struct resistor {
char type[50];
unsigned int resistance;
float tolerance;
unsigned int max_voltage;
};
Resistor* r = (Resistor*) malloc(sizeof(Resistor));