Pointer expressions

Home / C Programming / Pointer expressions

Pointer expressions


Pointer expressions in C involve various operations performed on pointers, enabling you to manipulate memory and access data efficiently. Here's a more comprehensive list of pointer expressions in C:

Arithmetic operations:

Addition: Adding an integer to a pointer moves it forward by that many elements (scaled by the size of the data type).

Subtraction: Subtracting an integer from a pointer moves it backward by that many elements (scaled by the size of the data type).


Dereferencing and accessing elements:

Dereferencing: *ptr gives the value stored at the memory location pointed to by ptr.

Accessing elements in arrays: ptr[i] is equivalent to *(ptr + i), giving the value of the i-th element pointed to by ptr.


Comparison operations:

Equality: ptr1 == ptr2 evaluates to true if ptr1 and ptr2 point to the same memory address.

Inequality: ptr1 != ptr2 evaluates to true if ptr1 and ptr2 point to different memory addresses.

Comparing against NULL: ptr == NULL checks if the pointer is NULL.


Pointer to pointer (Double pointer) expressions:

A pointer to pointer is a pointer that holds the address of another pointer. It is used in cases where you need to modify a pointer's value inside a function or return multiple pointers from a function.


Array of pointers:

An array of pointers is an array where each element is a pointer to another data type. It is used for handling arrays of strings or arrays of dynamically allocated memory blocks.


Pointer to array:

A pointer to an array is a pointer that points to the first element of an array. It is used when you want to pass an array to a function efficiently.


Function pointers:

A function pointer is a pointer that points to a function. It allows you to call a function indirectly through the pointer.


Understanding and correctly using these pointer expressions will enable you to work effectively with pointers and manipulate data and memory in C. However, it's essential to use caution to avoid undefined behavior or memory errors when working with pointers.