Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
Blog · C Programming · 03 Jul 2026 · Hindi + English

C में Const Pointer: Pointer to Const vs Const Pointer आसान भाषा में

3 forms master करें: pointer to const (const int *p), const pointer (int *const p) और const pointer to const. कभी confuse न होने की simple trick.

The 3 forms of const with pointers

There are exactly 3 combinations of const and pointers, and interviews love all three:
1. const int *p — pointer to const (data locked)
2. int *const p — const pointer (address locked)
3. const int *const p — const pointer to const (both locked)

The trick to never confuse them

Read the declaration from right to left.
  • const int *p → "p is a pointer to an int that is const" → value locked, pointer free.
  • int *const p → "p is a const pointer to an int" → pointer locked, value free.
  • const int *const p → "p is a const pointer to a const int" → both locked.
Simple rule: whatever the const touches on its left (or right if nothing on left) is what gets locked.

Form 1: Pointer to const

#include <stdio.h>
int main() {
    int a = 10, b = 20;
    const int *p = &a;

    // *p = 15;      // ERROR: value is locked through p
    p = &b;          // OK: pointer can move to another address
    printf("%d\n", *p);
    return 0;
}
20

Most used form. Every safe read-only function parameter is a pointer to const: size_t strlen(const char *s);

Form 2: Const pointer

#include <stdio.h>
int main() {
    int a = 10, b = 20;
    int *const p = &a;

    *p = 15;         // OK: value can change
    // p = &b;       // ERROR: pointer address is locked
    printf("%d\n", a);
    return 0;
}
15

A const pointer must be initialized at declaration, exactly like any const variable — because you cannot re-point it later.

Form 3: Const pointer to const

int a = 10, b = 20;
const int *const p = &a;

// *p = 15;   // ERROR: value locked
// p = &b;    // ERROR: pointer locked
printf("%d\n", *p);   // reading is the only allowed operation

Maximum protection: you can only read through p. Used for fixed lookup tables and hardware register maps.

Side-by-side summary

DeclarationChange value (*p = x)Change pointer (p = &y)
int *p✅ Yes✅ Yes
const int *p❌ No✅ Yes
int *const p✅ Yes❌ No
const int *const p❌ No❌ No

Pointers के साथ const के 3 forms

const और pointers के exactly 3 combinations होते हैं, और interviews में तीनों पूछे जाते हैं:
1. const int *p — pointer to const (data locked)
2. int *const p — const pointer (address locked)
3. const int *const p — const pointer to const (दोनों locked)

कभी confuse न होने की trick

Declaration को right से left पढ़ें.
  • const int *p → "p एक pointer है ऐसे int का जो const है" → value locked, pointer free.
  • int *const p → "p एक const pointer है int का" → pointer locked, value free.
  • const int *const p → "p एक const pointer है const int का" → दोनों locked.
Simple rule: const अपने left में (left में कुछ न हो तो right में) जिसे touch करता है, वही lock होता है.

Form 1: Pointer to const

#include <stdio.h>
int main() {
    int a = 10, b = 20;
    const int *p = &a;

    // *p = 15;      // ERROR: p के through value locked है
    p = &b;          // OK: pointer दूसरे address पर जा सकता है
    printf("%d\n", *p);
    return 0;
}
20

सबसे ज़्यादा use होने वाला form. हर safe read-only function parameter pointer to const होता है: size_t strlen(const char *s);

Form 2: Const pointer

#include <stdio.h>
int main() {
    int a = 10, b = 20;
    int *const p = &a;

    *p = 15;         // OK: value change हो सकती है
    // p = &b;       // ERROR: pointer का address locked है
    printf("%d\n", a);
    return 0;
}
15

const pointer को declaration पर ही initialize करना ज़रूरी है, बिल्कुल किसी const variable की तरह — क्योंकि बाद में re-point नहीं कर सकते.

Form 3: Const pointer to const

int a = 10, b = 20;
const int *const p = &a;

// *p = 15;   // ERROR: value locked
// p = &b;    // ERROR: pointer locked
printf("%d\n", *p);   // सिर्फ reading allowed है

Maximum protection: p से सिर्फ read कर सकते हैं. Fixed lookup tables और hardware register maps के लिए use होता है.

Side-by-side summary

DeclarationValue change (*p = x)Pointer change (p = &y)
int *p✅ हां✅ हां
const int *p❌ नहीं✅ हां
int *const p✅ हां❌ नहीं
const int *const p❌ नहीं❌ नहीं

Frequently Asked Questions

const int *p और int *const p में क्या अंतर है?

const int *p pointer to const है: p से value change नहीं हो सकती लेकिन p कहीं और point कर सकता है. int *const p const pointer है: value change हो सकती है लेकिन p एक ही address पर locked है.

Function parameters में const char *str का क्या मतलब है?

यह promise करता है कि function string को सिर्फ read करेगा, कभी modify नहीं — strlen और printf जैसे library functions का standard pattern.

क्या const pointer को initialize करना ज़रूरी है?

हां. int *const p को declaration पर ही initialize करना ज़रूरी है क्योंकि बाद में उसे नया address assign नहीं हो सकता.

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें