🎯 এই পর্বে যা জানবে:
- স্ট্রাকচার কী
- কেন স্ট্রাকচার ব্যবহার করা হয়
- স্ট্রাকচার ঘোষণা ও ব্যবহার
- স্ট্রাকচার মেম্বার অ্যাক্সেস
- স্ট্রাকচার ও ফাংশন
- Nested Structure
- Array of Structure
🧩 স্ট্রাকচার কী?
স্ট্রাকচার (Structure) হলো এক ধরনের user-defined data type, যা একাধিক ভিন্ন ভিন্ন ডেটা টাইপকে একটি নামে একত্রে ধারণ করতে পারে।
👉 সহজভাবে বললে —
স্ট্রাকচার হলো এমন একটি ডেটা টাইপ যেখানে একাধিক ভিন্ন ডেটা একসাথে রাখা যায়।
উদাহরণস্বরূপ, যদি তোমার একটি Student থাকে যার নাম, রোল নম্বর, ও CGPA — তিনটি তথ্য রাখতে চাও, তাহলে স্ট্রাকচার খুব উপকারী।
💡 স্ট্রাকচার কেন ব্যবহার করা হয়?
যখন একটি ডেটা একাধিক ভিন্ন টাইপের তথ্য ধারণ করে (যেমন সংখ্যা, স্ট্রিং, দশমিক), তখন স্ট্রাকচার ব্যবহার করে সেগুলো সহজে ব্যবস্থাপনা করা যায়।
এটি কোডকে সংগঠিত, পড়তে সহজ এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।
🧮 স্ট্রাকচার ঘোষণা (Structure Declaration)
struct Student {
int roll;
char name[50];
float cgpa;
};এখানে Student হলো একটি স্ট্রাকচার টাইপ, যার তিনটি সদস্য (member):
roll→ integername→ character array (string)cgpa→ float
⚙️ স্ট্রাকচার ভেরিয়েবল তৈরি
struct Student s1, s2;এছাড়াও একসাথে মান সেট করা যায় 👇
struct Student s1 = {101, "Rahim", 3.75};📥 স্ট্রাকচারের মান ইনপুট ও আউটপুট
#include <stdio.h>
struct Student {
int roll;
char name[50];
float cgpa;
};
int main() {
struct Student s;
printf("রোল নম্বর দিন: ");
scanf("%d", &s.roll);
printf("নাম দিন: ");
scanf("%s", s.name);
printf("CGPA দিন: ");
scanf("%f", &s.cgpa);
printf("\n--- ছাত্রের তথ্য ---\n");
printf("রোল: %d\n", s.roll);
printf("নাম: %s\n", s.name);
printf("CGPA: %.2f\n", s.cgpa);
return 0;
}🧭 স্ট্রাকচার মেম্বার অ্যাক্সেস (Accessing Members)
স্ট্রাকচারের সদস্য অ্যাক্সেস করতে . (ডট অপারেটর) ব্যবহার করা হয়।
👉 উদাহরণ:
s1.roll = 101;
s1.cgpa = 3.8;
printf("%s", s1.name);🔁 ফাংশনে স্ট্রাকচার পাঠানো
💡 By Value (কপি পাঠানো)
#include <stdio.h>
struct Point {
int x, y;
};
void printPoint(struct Point p) {
printf("x = %d, y = %d\n", p.x, p.y);
}
int main() {
struct Point p1 = {10, 20};
printPoint(p1);
return 0;
}💡 By Reference (ঠিকানা পাঠানো)
#include <stdio.h>
struct Point {
int x, y;
};
void changePoint(struct Point *p) {
p->x = 50;
p->y = 100;
}
int main() {
struct Point p1 = {10, 20};
changePoint(&p1);
printf("x = %d, y = %d\n", p1.x, p1.y);
return 0;
}🧱 Nested Structure (স্ট্রাকচারের ভিতরে স্ট্রাকচার)
#include <stdio.h>
struct Date {
int day, month, year;
};
struct Student {
int roll;
char name[50];
struct Date dob;
};
int main() {
struct Student s = {101, "Rahim", {15, 8, 2004}};
printf("নাম: %s\n", s.name);
printf("জন্মতারিখ: %d-%d-%d\n", s.dob.day, s.dob.month, s.dob.year);
return 0;
}📚 Array of Structure
একাধিক ছাত্রের তথ্য রাখতে চাইলে স্ট্রাকচারের অ্যারে ব্যবহার করা হয়।
#include <stdio.h>
struct Student {
int roll;
char name[50];
float cgpa;
};
int main() {
struct Student students[3] = {
{101, "Rahim", 3.6},
{102, "Karim", 3.8},
{103, "Sadia", 3.9}
};
for(int i=0; i<3; i++) {
printf("%d. %s - %.2f\n", students[i].roll, students[i].name, students[i].cgpa);
}
return 0;
}🧠 স্ট্রাকচার ব্যবহারের সুবিধা
✅ একাধিক ডেটা একত্রে রাখা যায়
✅ কোড আরও সংগঠিত হয়
✅ বড় প্রজেক্টে ডেটা ম্যানেজমেন্ট সহজ করে
✅ ডাটাবেস বা ফাইল অপারেশনে খুব কার্যকর
⚠️ সতর্কতা
❌ স্ট্রাকচারের মধ্যে বড় ডেটা পাঠানোর সময় মেমোরি খরচ বেশি হতে পারে
✅ বড় ডেটা নিয়ে কাজ করার সময় pointer ব্যবহার করা ভালো
✨ সংক্ষেপে
- স্ট্রাকচার একাধিক ভিন্ন ডেটা একত্রে ধারণ করতে পারে
- ডট (
.) অপারেটর দিয়ে সদস্য অ্যাক্সেস করা হয় - Nested Structure ও Array of Structure খুব গুরুত্বপূর্ণ
- ফাংশনের মাধ্যমে স্ট্রাকচার পাস করা যায়



