Pointers in C are variables that store memory addresses. Instead of holding a data
value directly, a pointer holds the address of a variable. Pointers are a powerful
feature in C, allowing for dynamic memory allocation, efficient array
manipulation, and implementing data structures like linked lists and trees.
1. Declaring Pointers
To declare a pointer, you use the * operator, which specifies that the variable will
store a memory address.
The basic syntax for declaring a pointer is:
data_type *pointer_name;
Example:
#include <stdio.h>
int main() {
int num = 10;
int *ptr; // Pointer to an integer
ptr = # // Storing the address of 'num' in 'ptr'
printf("Value of num: %d\n", num); // Output: 10
printf("Address of num: %p\n", (void*)&num); // Output: Memory address of
num
printf("Value stored in ptr (address of num): %p\n", (void*)ptr); // Output:
Address of num
printf("Dereferencing ptr (value at ptr): %d\n", *ptr); // Output: 10
return 0;
}
, Here, ptr is a pointer to an integer, and it holds the address of num. The &
operator gives the address of a variable, and the * operator is used to
dereference a pointer (access the value stored at that address).
2. Pointer Dereferencing
Dereferencing a pointer means accessing the value at the memory address the
pointer is pointing to.
The syntax to dereference a pointer is:
*pointer_name
Example:
#include <stdio.h>
int main() {
int num = 25;
int *ptr = # // Pointer holds the address of num
printf("Value of num: %d\n", num); // Output: 25
printf("Value at ptr (dereferencing): %d\n", *ptr); // Output: 25
return 0;
}
In this example, dereferencing ptr gives the value of num.
3. Pointer to Pointer
A pointer can also point to another pointer, which is known as a pointer to a
pointer.