📍 C Pointers
Estimated reading: 3 minutes 7 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 :

Leave a Reply

Your email address will not be published. Required fields are marked *

Share

✴️ C Dereferencing

Or Copy Link

CONTENTS
Scroll to Top