|8. Pointers & References
Chapter 8C++ Tutorial~1 min read

Pointers & References

Pointers — Memory Addresses

C++ मध्ये pointers C सारखेच आहेत + references (&) आणि smart pointers (unique_ptr, shared_ptr) आले. nullptr वापरा — NULL नाही. References म्हणजे existing variable चे alias.

Pointer Basics

& address-of, * dereference

cpp
#include <iostream>
using namespace std;

int main() {
    int num = 42;

    // & = address-of operator
    cout << "Value:   " << num   << endl;  // 42
    cout << "Address: " << &num  << endl;  // 0x7fff...

    // int* — integer pointer
    int *ptr = &num;   // ptr holds num's address

    cout << "ptr:  " << ptr   << endl;  // address
    cout << "*ptr: " << *ptr  << endl;  // 42 — dereference

    // Pointer ने value बदलणे
    *ptr = 100;
    cout << "num is now: " << num << endl;  // 100

    // nullptr — null pointer (C++11, NULL पेक्षा safe)
    int *p = nullptr;
    if (p == nullptr) {
        cout << "Pointer is null" << endl;
    }

    return 0;
}

References — Alias

Reference — same variable, different name

cpp
int num = 42;

// Reference — num चे alias
int &ref = num;  // ref आणि num same memory!

cout << num << endl;  // 42
cout << ref << endl;  // 42

ref = 100;            // ref बदलला → num पण बदलतो!
cout << num << endl;  // 100

// Pointer vs Reference
// Pointer — reassignable, nullable, * dereference लागतो
// Reference — always valid, reassign नाही, . notation

// Function parameter म्हणून reference
void increment(int &x) { x++; }

int a = 5;
increment(a);
cout << a << endl;  // 6 — original बदलला

Dynamic Memory — new/delete

Heap memory allocation

cpp
// new — heap वर memory allocate करतो
int *p = new int(42);     // single int
cout << *p << endl;        // 42

int *arr = new int[5];    // array of 5 ints
arr[0] = 10; arr[1] = 20;

// delete — memory free करणे — MANDATORY!
delete p;
delete[] arr;  // array साठी delete[]

// Modern C++ — smart pointers (memory auto free)
#include <memory>
auto sp = make_unique<int>(42);  // unique_ptr
cout << *sp << endl;  // 42
// delete लागत नाही — scope संपल्यावर auto free!

Key Points — लक्षात ठेवा

  • & address-of, * dereference/declare pointer
  • int *ptr = &var — pointer declaration
  • int &ref = var — reference (alias)
  • nullptr — null pointer (C++11), NULL पेक्षा safe
  • new/delete — heap allocation (delete विसरू नका!)
0/11 chapters पूर्ण