Constant Pointers
A constant pointer in C is a pointer that cannot be modified to point to a different memory location. However, the value stored at the memory location it points to can be modified.
Declaration
A constant pointer is declared using the const
keyword before the pointer type:
const int *ptr;
In this example, ptr
is a constant pointer to an integer. This means that you cannot change the address that ptr
points to. However, you can modify the value stored at the memory location pointed to by ptr
.
Usage
Constant pointers are often used to:
- Protect data from accidental modification: By declaring a pointer as constant, you can prevent it from being accidentally changed to point to a different location, ensuring that the data it points to remains intact.
- Pass arguments to functions by reference: Constant pointers can be used to pass arguments to functions by reference, allowing the function to modify the value of the variable without modifying the pointer itself.
- Create read-only data structures: Constant pointers can be used to create read-only data structures, preventing accidental modifications to the data.
Example:
#include <stdio.h>
int main() {
int x = 10;
const int *ptr = &x;
// This is valid:
x = 20;
printf("x: %dn", x);
// This is invalid:
// ptr = &y; // Cannot modify the pointer itself
return 0;
}
In this example, ptr
is a constant pointer to x
. You can modify the value of x
using ptr
, but you cannot change the address that ptr
points to.
Best Practices
- Use constant pointers to protect data from accidental modification.
- Be careful when using constant pointers to avoid unintended consequences.
- Consider using
const
with both the pointer and the data type to create truly immutable values.