0 Tage Serie
c / intermediate
Snippet

Array-Zerfall und Pointer-Arithmetik

In C 'zerfallen' Arrays in Pointer auf ihr erstes Element, wenn sie an Funktionen übergeben werden. Das bedeutet, dass die Größeninformation innerhalb der Funktion verloren geht. Verwenden Sie Pointer-Arithmetik (ptr + offset), um manuell durch das Speicherlayout zu navigieren.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
void inspect_array(int *ptr, int size) {
printf("Value at index 2: %d\n", *(ptr + 2));
printf("Size of pointer: %zu bytes\n", sizeof(ptr));
}
int main(void) {
int data[] = {10, 20, 30, 40, 50};
printf("Size of actual array: %zu bytes\n", sizeof(data));
// Array 'data' decays to a pointer to its first element
inspect_array(data, 5);
return 0;
}
Erklärung
1
*(ptr + 2)
Greift auf das dritte Element zu, indem ein Offset zum Basis-Pointer addiert wird.
2
sizeof(data)
Gibt die Gesamtgröße des Arrays in Bytes zurück, da es sich noch im Scope befindet.