Skip to content

āϤ⧋āĻŽāϰāĻž āĻ…āύ⧇āϕ⧇āχ āĻšā§ŸāϤ⧋ āĻ­āĻžāĻŦāϤ⧇āϛ⧋, "variable declare āφāϰ define — āĻāχ āĻĻ⧁āϟāĻž āĻ•āĻŋ āĻāĻ• āϜāĻŋāύāĻŋāϏ āύāĻžāĻ•āĻŋ āφāϞāĻžāĻĻāĻž āĻ•āĻŋāϛ⧁?" 🤔
āĻāχ āϞ⧇āϏāύ⧇ āφāĻŽāϰāĻž āĻāĻ•āĻĻāĻŽ crystal clear āĻ•āϰāĻŦā§‹ āĻāχ confusion! ✅


🧠 006. Variable Declaration vs Definition in CÂļ

āφāĻŽāϰāĻž āĻāĻ–āĻžāύ⧇ āĻŦ⧁āĻāĻŦā§‹ āĻĻ⧁āχāϟāĻž āϜāĻŋāύāĻŋāϏ:

  1. Declaration (āĻ˜ā§‹āώāĻŖāĻž) đŸ“Ŗ
  2. Definition (āϏāĻ‚āĻœā§āĻžāĻž) 🧱

🔎 āϏāĻšāϜ āĻ­āĻžāώāĻžā§Ÿ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝÂļ

| 📌 āϧāϰ⧋ āϤ⧁āĻŽāĻŋ āĻ•āĻžāωāϕ⧇ āĻŦāϞāϞāĻž:

“āĻ­āĻžāχ, āφāĻŽāĻŋ āĻāĻ•āϟāĻž āϜāĻžā§ŸāĻ—āĻž āϰāĻžāĻ–āϤ⧇āĻ›āĻŋ, āϏāĻžāĻŽāύ⧇ āĻ—āĻŋā§Ÿā§‡ āĻ“āĻ–āĻžāύ⧇ āĻ•āĻŋāϛ⧁ āϰāĻžāĻ–āĻŦā§‹āĨ¤â€
āĻāϟāĻž āĻšāϞ⧋ Declaration

| 📌 āφāϰ āϝāĻ–āύ āϤ⧁āĻŽāĻŋ āĻŦāϞāϞāĻž:

“āĻ­āĻžāχ, āĻāχ āϜāĻžā§ŸāĻ—āĻžā§Ÿ āφāĻŽāĻŋ āĻāĻ–āύāχ āĻāχ āϜāĻŋāύāĻŋāϏāϟāĻž āϰāĻžāĻ–āϤ⧇āĻ›āĻŋāĨ¤â€
āĻāϟāĻž āĻšāϞ⧋ Definition


đŸ› ī¸ In C Programming TermsÂļ

✅ Declaration āĻŽāĻžāύ⧇:Âļ

āĻļ⧁āϧ⧁ variable-āϟāĻž āφāϛ⧇ āĻŦāϞ⧇ āϜāĻžāύāĻžāύ⧋, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϕ⧋āύ value āĻĻā§‡ā§ŸāĻž āĻšā§Ÿ āύāĻžāĨ¤

extern int age;  // Just saying: age āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻž variable āφāϛ⧇
  • āĻāĻ–āĻžāύ⧇ extern keyword use āĻ•āϰāĻž āĻšāχāϛ⧇ āĻ•āĻžāϰāĻŖ āϤ⧁āĻŽāĻŋ āĻļ⧁āϧ⧁ āĻŦāϞāϤ⧇āϛ⧋ āϝ⧇ variable āϟāĻž exists, value āĻĻāĻžāĻ“āύāĻŋāĨ¤
  • āĻāϟāĻž useful āϝāĻ–āύ variable āĻ…āĻ¨ā§āϝ file-āĻ define āĻ•āϰāĻž āĻšā§Ÿ (multi-file projects).

✅ Definition āĻŽāĻžāύ⧇:Âļ

Variable-āϟāĻž declare āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻāĻ•āχ āϏāĻžāĻĨ⧇ memory allocate āĻ•āϰāĻž āĻšā§ŸāĨ¤
Value āύāĻž āĻĻāĻŋāϞ⧇āĻ“, memory reserve āĻšā§Ÿā§‡ āϝāĻžā§ŸāĨ¤

int age;         // Declaration + Definition
int roll = 101;  // Declaration + Definition + Initialization

āĻāĻ–āĻžāύ⧇ memory allocate āĻšā§Ÿā§‡ āϗ⧇āϛ⧇, āφāϰ roll āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ value āĻ“ set āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤


âš™ī¸ Table: Declaration vs DefinitionÂļ

Feature Declaration Definition
Purpose āĻŦāϞ⧇ āĻĻā§‡ā§Ÿ āϝ⧇ variable āφāϛ⧇ variable āĻŦāĻžāύāĻžā§Ÿ āĻāĻŦāĻ‚ memory āϰāĻŋāϜāĻžāĻ°ā§āĻ­ āĻ•āϰ⧇
Memory Allocation ❌ āύāĻž ✅ āĻšā§āϝāĻžāρ
Example extern int age; int age; āĻŦāĻž int age = 25;
Initialization ❌ āύāĻž ✅ āϏāĻŽā§āĻ­āĻŦ (āϚāĻžāχāϞ⧇āχ value āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋ)

âš ī¸ Warning! Variable Declare āĻ•āϰāĻž āĻŽāĻžāύ⧇āχ memory āĻĒāĻžāĻ“ā§ŸāĻž āύāĻž đŸ˜ŦÂļ

extern int number;

↑ āĻļ⧁āϧ⧁ āĻŦāϞāϞāĻžāĻŽ āϝ⧇ number āύāĻžāĻŽā§‡ āĻ•āĻŋāϛ⧁ āĻāĻ•āϟāĻž āφāϛ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻž āĻāĻ–āύ⧋ āĻŦāĻžāύāĻžāύ⧋ āĻšā§ŸāύāĻŋ ❌
āĻ…āĻ¨ā§āϝ āϕ⧋āύ āϜāĻžā§ŸāĻ—āĻžā§Ÿ āĻāϟāĻžāϰ definition āĻĨāĻžāĻ•āĻž āϞāĻžāĻ—āĻŦ⧇:

int number = 5;

đŸ§Ē Example: Declaration vs Definition (2 files)Âļ

📁 main.cÂļ

#include <stdio.h>

extern int age; // Declaration only

int main() {
    printf("Age: %d\n", age);  // Use external variable
    return 0;
}

📁 data.cÂļ

int age = 25; // Definition here

✅ Now compile both files together:

gcc main.c data.c -o output
./output

📤 Output:

Age: 25

đŸĒ„ Quick Recap (Bangla Summary)Âļ

āĻŦāĻŋāώ⧟ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
Declaration Variable āϟāĻž āφāϛ⧇ āĻāϟāĻž āĻŦāϞāϤ⧇āĻ›āĻŋ, āĻ•āĻŋāĻ¨ā§āϤ⧁ value āĻŦāĻž memory āύāĻžāχ
Definition Variable declare āĻ•āϰāϞāĻžāĻŽ āĻāĻŦāĻ‚ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻŦāĻžāύāĻŋā§Ÿā§‡āĻ“ āĻĢ⧇āϞāϞāĻžāĻŽ
extern āϕ⧇āĻŦāϞ declaration āĻŦā§‹āĻāĻžāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§Ÿ
Memory Declaration-āĻ āύāĻžāχ, Definition-āĻ āφāϛ⧇
Real use case āĻŦ⧜ āĻŦ⧜ project āĻŦāĻž multi-file project-āĻ Declaration āĻĻāϰāĻ•āĻžāϰ

🧑‍đŸĢ Practical Tip:Âļ

āϤ⧁āĻŽāĻŋ āϝāĻĻāĻŋ āĻāĻ–āύ āĻļ⧁āϧ⧁ āĻāĻ• āĻĢāĻžāχāϞ⧇ āĻ•āĻžāϜ āĻ•āϰ⧋, āϤāĻžāĻšāϞ⧇ Declaration āύāĻŋā§Ÿā§‡ āĻŽāĻžāĻĨāĻž āϘāĻžāĻŽāĻžāύ⧋āϰ āĻĻāϰāĻ•āĻžāϰ āύāĻžāχ — āϏāĻŦāχ Definition āĻĻāĻŋā§Ÿā§‡ āĻļ⧁āϰ⧁ āĻ•āϰ⧋:

int age = 18; // This is enough for now!