0 Tage Serie
c / intermediate
Snippet

Const-Korrektheit bei Pointer-Variationen

Zu verstehen, wo 'const' platziert wird, ist entscheidend für die API-Sicherheit. Ein Pointer auf eine Konstante stellt sicher, dass die Daten nicht geändert werden, während ein konstanter Pointer sicherstellt, dass der Pointer selbst immer auf denselben Speicherort zeigt.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
void demonstrate_const() {
int val1 = 10, val2 = 20;
const int* p1 = &val1; // Pointer to constant int
// *p1 = 15; // Error: cannot modify data
p1 = &val2; // OK: can change address
int* const p2 = &val1; // Constant pointer to int
*p2 = 15; // OK: can modify data
// p2 = &val2; // Error: cannot change address
const int* const p3 = &val1; // Constant pointer to constant int
// p3 = &val2; // Error
// *p3 = 15; // Error
}
Erklärung
1
const int* p1
Die Daten, auf die gezeigt wird, sind über diesen Pointer schreibgeschützt.
2
int* const p2
Die im Pointer gespeicherte Speicheradresse ist fest und kann nach der Initialisierung nicht mehr geändert werden.