📍 C Pointers
Estimated reading: 3 minutes 373 views

✴️ C Dereferencing – Accessing Values Through Pointers in C


Introduction – What Is Pointer Dereferencing in C?

In C programming, dereferencing means accessing the value stored at the memory address a pointer is pointing to. It is performed using the * (asterisk) operator.

Dereferencing is one of the most fundamental operations with pointers. Without it, pointers would just be memory references without meaningful access to data.

In this guide, you’ll learn:

  • The syntax and behavior of pointer dereferencing
  • How to read and modify values via dereferencing
  • Common use cases with examples
  • Best practices and safety measures

Core Concept – What Does Dereferencing Do?

When you have a pointer (e.g., int *p), dereferencing it (*p) gives you the value at the memory address it holds.

Syntax:

int a = 10;
int *p = &a;
printf("%d\n", *p);  // Dereferencing p gives value of a

*p reads the value at the address held by p


Code Examples – Dereferencing in Action

Example 1: Reading Value Using Dereference

#include <stdio.h>

int main() {
    int num = 25;
    int *ptr = &num;

    printf("Value of num: %d\n", *ptr);  // Output: 25

    return 0;
}

Example 2: Modifying Value via Pointer

#include <stdio.h>

int main() {
    int x = 5;
    int *px = &x;

    *px = *px + 10;  // Updates x to 15
    printf("Updated x = %d\n", x);

    return 0;
}

The expression *px = *px + 10 modifies the original variable x.


Example 3: Dereferencing in Function Call

#include <stdio.h>

void square(int *n) {
    *n = (*n) * (*n);
}

int main() {
    int value = 4;
    square(&value);
    printf("Squared: %d\n", value);  // Output: 16

    return 0;
}

Dereferencing inside the function allows direct modification of the original value.


Valid vs Invalid Dereferencing

SituationIs Dereferencing Safe?
Initialized pointer Yes
NULL pointer No (crash)
Dangling pointer No (undefined)
Pointer to dynamic memory Yes

Best Practices & Tips

Best Practice:
Always check if a pointer is NULL before dereferencing it.

Tip:
Use meaningful pointer names like ptr, pData, or valuePtr to improve readability.

Pitfall:
Dereferencing an uninitialized, NULL, or dangling pointer leads to segmentation faults or crashes.


Real-World Applications

  • Accessing values in linked lists, trees, and graphs
  • Modifying variables via pointer parameters in functions
  • Building shared memory communication in OS-level applications
  • Handling buffer data in networking, file I/O, and embedded systems

Summary – Recap & Next Steps

Dereferencing lets you read or modify values via pointers, making it an essential operation in C programming.

Key Takeaways:

  • *ptr accesses the value at the address stored in ptr
  • It is useful for manipulating values indirectly
  • Safe dereferencing requires pointer to be valid and initialized
  • Used extensively in data structures and memory operations

Real-World Relevance:

Pointer dereferencing powers low-level programming, driver development, OS kernels, and system utilities.


Frequently Asked Questions (FAQ)

What is dereferencing a pointer?

Dereferencing means accessing the value located at the address a pointer holds using the * operator.


Can you dereference a NULL pointer?

No. It causes a segmentation fault. Always check for NULL before dereferencing.


Is *ptr = value; the same as assigning the value to the pointed variable?

Yes. If ptr points to x, then *ptr = 10; updates x to 10.


Can I dereference any pointer?

Only dereference a pointer that:

  • Points to valid memory
  • Is initialized and non-NULL
  • Has not been freed (not dangling)

What’s the difference between *ptr and &var?

*ptr gets the value at an address
&var gets the address of a variable


Share Now :
Share

✴️ C Dereferencing

Or Copy Link

CONTENTS
Scroll to Top