c / intermediate
Snippet
Konstante Pointer vs. Pointer auf Konstanten
Die Platzierung des Schlüsselworts 'const' bestimmt, was unveränderlich ist. 'const int *' bedeutet, dass die Daten, auf die gezeigt wird, nicht über diesen Pointer geändert werden können. 'int * const' bedeutet, dass die Pointer-Adresse selbst nach der Initialisierung nicht mehr geändert werden kann.
snippet.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>int main() {int val = 10, other = 20;const int *ptr1 = &val; // Pointer to constantint * const ptr2 = &val; // Constant pointerptr1 = &other; // OK: pointer can change// *ptr1 = 15; // Error: value is constant*ptr2 = 15; // OK: value can change// ptr2 = &other; // Error: pointer is constantreturn 0;}
Erklärung
1
const int *ptr1 = &val;
Der Integer-Wert ist aus der Sicht von ptr1 konstant.
2
int * const ptr2 = &val;
Die in ptr2 gespeicherte Pointer-Adresse ist fixiert und kann nicht woandershin zeigen.