Pointers

C pointer operations and usage

C basic pointer operations

C basic pointer declaration and operations

#include <stdio.h>

int main() {
    int num = 42;
    int *ptr = &num;
    
    printf("Value: %d\n", num);
    printf("Address: %p\n", &num);
    printf("Pointer value: %p\n", ptr);
    printf("Pointer dereference: %d\n", *ptr);
    
    *ptr = 100;
    printf("After modification: %d\n", num);
    
    return 0;
}
C pointer arithmetic

C pointer arithmetic with arrays

#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int *ptr = arr;
    
    for (int i = 0; i < 5; i++) {
        printf("arr[%d] = %d\n", i, *(ptr + i));
    }
    
    return 0;
}
C pointer to pointer

C pointer to pointer operations

#include <stdio.h>

int main() {
    int num = 42;
    int *ptr1 = &num;
    int **ptr2 = &ptr1;
    
    printf("Value: %d\n", num);
    printf("Pointer 1: %p\n", ptr1);
    printf("Pointer 2: %p\n", ptr2);
    printf("Value through ptr2: %d\n", **ptr2);
    
    return 0;
}
C pointer with function parameters

C pointer with function parameters for swapping

#include <stdio.h>

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

int main() {
    int x = 10, y = 20;
    printf("Before swap: x = %d, y = %d\n", x, y);
    
    swap(&x, &y);
    printf("After swap: x = %d, y = %d\n", x, y);
    
    return 0;
}
C pointer with array of pointers

C pointer with array of pointers to strings

#include <stdio.h>

int main() {
    char *fruits[] = {"apple", "banana", "cherry"};
    int size = sizeof(fruits) / sizeof(fruits[0]);
    
    for (int i = 0; i < size; i++) {
        printf("Fruit %d: %s\n", i, fruits[i]);
    }
    
    return 0;
}