main.cpp
ARRAY MEMORY LAYOUT (int = 4 bytes):
Index: arr[0] arr[1] arr[2] arr[3]
Address: 0x1000 0x1004 0x1008 0x100C
Pointer: ptr ptr + 1 ptr + 2 ptr + 3ARRAY MEMORY LAYOUT (int = 4 bytes):
Index: arr[0] arr[1] arr[2] arr[3]
Address: 0x1000 0x1004 0x1008 0x100C
Pointer: ptr ptr + 1 ptr + 2 ptr + 3arr[i] == *(arr + i) == *(i + arr) == i[arr]
#include <iostream>
int main() {
int buffer[5] = {10, 20, 30, 40, 50};
int* ptr = buffer; // Decays to &buffer[0]
std::cout << "Traversing via Pointer Arithmetic:
";
for (int i = 0; i < 5; ++i) {
std::cout << "Element [" << i << "]: " << *(ptr + i)
<< " at address: " << (ptr + i) << "
";
}
// Pointer difference (number of elements between pointers)
int* endPtr = buffer + 5;
std::cout << "Total elements (end - start): " << (endPtr - ptr) << "
";
return 0;
}std::array or std::vector instead of C-style raw arrays to preserve size information.std::span (C++20) for non-owning views over contiguous memory buffers.arr + N).