🗄️
Basics

Arrays

Storing Multiple Values
💡 Array ek train hai jisme saare dabbe (elements) same type ke hain aur ek line mein connected hain — index se seedha kisi bhi dabbe tak pahunch sakte ho.

Array same-type elements ka fixed-size collection hai, memory mein contiguous (ek ke baad ek) store hota hai. Index 0 se shuru hota hai — pehla element arr[0], last element arr[size-1].

C mein array ka size fix hota hai declare hote waqt, aur C khud bounds check nahi karta — agar tum arr[10] access karo ek size-5 array par, koi error nahi aayegi turant, lekin ye "undefined behavior" hai (crash ya galat data mil sakta hai). Java mein ye ArrayIndexOutOfBoundsException deta, C mein nahi!

int marks[5] = {90, 85, 78, 92, 88};
printf("%d\n", marks[0]);  // 90
printf("%d\n", marks[4]);  // 88

for (int i = 0; i < 5; i++) {
  printf("%d ", marks[i]);
}
🗄️
Array ek train hai jisme saare dabbe (elements) same type ke hain aur ek line mein connected hain — index se seedha kisi bhi dabbe tak pahunch sakte ho.
1 / 7
⚡ Quick Recap
  • Array = fixed-size, same-type, contiguous memory
  • Index 0 se shuru
  • C bounds check nahi karta — out-of-bounds access "undefined behavior" hai
Is page mein (2 subtopics)

Array ko declare karte waqt hi initialize kar sakte ho ({1,2,3} jaisa), ya baad mein element-by-element. Agar initialize karte waqt size nahi doge, C khud gin lega kitne elements diye — int arr[] = {1,2,3} automatically size 3 ban jaata hai.

Agar size do lekin kam elements initialize karo, baaki automatically 0 ho jaate hain — int arr[5] = {1,2} ka matlab {1, 2, 0, 0, 0}.

int a[3] = {10, 20, 30};
int b[] = {1, 2, 3, 4};      // size auto = 4
int c[5] = {1, 2};            // {1, 2, 0, 0, 0}
int zeros[100] = {0};         // saare 100 elements 0
💡Tip: int zeros[100] = {0}; ek common pattern hai poore array ko 0 se initialize karne ke liye — sirf pehla element 0 diya, baaki khud-ba-khud 0 ho jaate hain.

Jab array function mein pass karte ho, actually poora array copy nahi hota — sirf uska address (pointer) pass hota hai. Isliye function ke andar array modify karne se original array bhi change ho jaata hai (Java mein bhi arrays reference type hain, similar behavior).

Function ko array ka size khud nahi pata hota (sirf pointer milta hai) — isliye size ko separately parameter ke roop mein pass karna padta hai.

void printArray(int arr[], int size) {
  for (int i = 0; i < size; i++) {
    printf("%d ", arr[i]);
  }
}

int main() {
  int nums[5] = {1, 2, 3, 4, 5};
  printArray(nums, 5);
  return 0;
}
⚠️Common Mistake: Function ke andar sizeof(arr) galat answer dega (sirf pointer ka size, jaise 8 bytes, poore array ka nahi) — isiliye size hamesha separately pass karo.