|10. Pointers in C
Chapter 10C Language Tutorial~1 min read

Pointers in C

Pointers — Memory Addresses

Pointer म्हणजे दुसऱ्या variable चा memory address साठवणारा variable. C चे सर्वात powerful आणि unique feature! Dynamic memory, arrays, strings, functions — सगळ्यात pointers वापरतात.

Marathi Analogy

Pointer म्हणजे Pune मधल्या घराचा पत्ता. घर म्हणजे variable (data साठवतो). पत्ता म्हणजे pointer (घर कुठे आहे ते सांगतो). पत्त्यावर जाऊन घरातले बदलता येते — हेच pointer dereference!

& आणि * — Address आणि Dereference

Pointer basics

c
#include <stdio.h>

int main() {
    int num = 42;

    // & = address-of operator — variable चा address देतो
    printf("Value: %d\n", num);
    printf("Address: %p\n", &num);   // ex: 0x7fff5a2b

    // Pointer declare करणे — * वापरतात
    int *ptr = &num;   // ptr मध्ये num चा address आहे

    printf("ptr holds: %p\n", ptr);    // num चा address
    printf("*ptr = %d\n", *ptr);       // 42 — dereference

    // Pointer द्वारे value बदलणे
    *ptr = 100;
    printf("num is now: %d\n", num);   // 100 — बदलला!

    return 0;
}

Pointer आणि Arrays

Array name = pointer to first element

c
#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int *ptr = arr;   // arr हे arr[0] चा address आहे

    // Pointer arithmetic
    printf("%d\n", *ptr);       // 10 — arr[0]
    printf("%d\n", *(ptr+1));   // 20 — arr[1]
    printf("%d\n", *(ptr+2));   // 30 — arr[2]

    // Pointer वापरून array traverse करणे
    for (int i = 0; i < 5; i++) {
        printf("%d ", *(ptr + i));
    }
    // Output: 10 20 30 40 50

    return 0;
}

Pointer as Function Parameter — Call by Reference

Pointer passed to function — original बदलतो!

c
#include <stdio.h>

// Pointer receive करतो — original बदलू शकतो
void doubleIt(int *x) {
    *x = *x * 2;
}

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int num = 5;
    doubleIt(&num);
    printf("num after double: %d\n", num);  // 10

    int x = 3, y = 7;
    swap(&x, &y);
    printf("After swap: x=%d, y=%d\n", x, y);  // x=7, y=3

    return 0;
}

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

  • & = address-of: &num → num चा memory address
  • * = dereference: *ptr → ptr जो address hold करतो त्यातला value
  • int *ptr — integer pointer declare
  • Array name itself is a pointer to its first element
  • Pointer function parameter — call by reference होतो
0/12 chapters पूर्ण