🔧
Basics

C Kya Hai?

Introduction
💡 C seekhna ek gaadi ka engine kholke dekhne jaisa hai — tumhe pata chalta hai cheezein andar se kaise kaam karti hain, jo baad mein kisi bhi doosri language (Java, Python, JavaScript) ko samajhna aasan bana deta hai.

C ek programming language hai jo 1972 mein Dennis Ritchie ne banayi thi — aur aaj bhi operating systems (Linux, Windows ka bahut hissa), embedded devices, aur high-performance software C mein hi likhe jaate hain.

Java/Python jaisi languages "high-level" hoti hain — bahut sa kaam (memory management, garbage collection) automatically ho jaata hai. C "low-level" ke kaafi kareeb hai — tumhe memory khud manage karni padti hai, jo powerful bhi hai aur seekhne layak bhi, kyunki computer *actually* kaise kaam karta hai wo samajh aata hai.

Kaise chalta hai? .c file likhte ho, ek "compiler" (jaise gcc) use karke usse machine code mein convert karte ho, aur wo directly CPU par run hota hai — Java ki tarah beech mein koi JVM nahi hota.

#include <stdio.h>

int main() {
  printf("Hello, C!\n");
  return 0;
}
🔧
C seekhna ek gaadi ka engine kholke dekhne jaisa hai — tumhe pata chalta hai cheezein andar se kaise kaam karti hain, jo baad mein kisi bhi doosri language (Java, Python, JavaScript) ko samajhna aasan bana deta hai.
1 / 6
⚡ Quick Recap
  • C = low-level, 1972 se, OS aur embedded systems ki backbone
  • Compile karke seedha machine code banta hai — koi JVM nahi
  • Memory khud manage karni padti hai
Is page mein (3 subtopics)

C 1972 mein Bell Labs mein Dennis Ritchie ne banayi thi, originally Unix operating system likhne ke liye. Aaj bhi Linux kernel, Windows ka core, Python/Ruby jaisi languages ke interpreters, aur almost saare embedded devices (microwave se lekar car ke ECU tak) C mein hi likhe jaate hain.

Interview mein aksar pucha jaata hai ki C itni purani hokar bhi relevant kyun hai — jawaab: C bahut fast hai (koi extra layer nahi, seedha machine ke kareeb), aur bahut predictable hai (koi hidden garbage collector jo random time par pause kare).

// C hamesha main() se shuru hota hai
int main() {
  // program yaha se chalta hai
  return 0; // 0 = success
}
💡Tip: return 0; ka matlab hai program successfully complete hua — non-zero return (jaise return 1;) operating system ko batata hai ki kuch error aayi. Ye shell scripts mein bahut use hota hai.

C code seedha nahi chalta — pehle "preprocessing" hoti hai (jaise #include files ko actually copy-paste kar dena), phir "compilation" (C code ko assembly mein convert karna), phir "assembly" (machine code banana), aur last mein "linking" (saare pieces ko jodkar ek executable banana).

Java se bada farq: Java ".class" bytecode banata hai jo JVM chalati hai — C seedha CPU-specific machine code banata hai, isliye ek Windows par compile kiya C program Mac par seedha nahi chalega (recompile karna padega), jabki Java "write once, run anywhere" hai.

// Terminal mein compile aur run karna:
// $ gcc hello.c -o hello
// $ ./hello
💡Tip: Compile-time par hi bahut saari galtiyan pakdi jaati hain (jaise type mismatches) — ye Python jaise interpreted languages se ek fayda hai, jaha galti sirf tab pata chalti hai jab wo line actually chale.

printf() output print karta hai, format specifiers ke saath: %d (integer), %f (float/double), %c (character), %s (string). scanf() user se input leta hai, similarly format specifiers use karke.

scanf() mein variable ka address dena padta hai (& symbol se), na ki variable khud — ye pointers ka pehla introduction hai jo aage detail mein aayega.

int age;
printf("Apni age batao: ");
scanf("%d", &age);  // & zaroori hai!
printf("Tum %d saal ke ho\n", age);
⚠️Common Mistake: scanf() mein & bhoolna ek bahut common bug hai — bina & ke, scanf() ko galat memory address milta hai aur program crash ho sakta hai ya galat behave kar sakta hai.