ساختارها (Struct) در C
گروهبندی دادههای مرتبط با struct، دسترسی با نقطه و اشارهگر به ساختار
struct چیست؟
struct به شما اجازه میدهد انواع مختلف داده را که با هم مرتبطاند، در یک واحد گروهبندی کنید. مثلاً برای یک دانشجو: نام (رشته)، سن (عدد) و معدل (اعشاری).
تعریف struct
struct Student {
char name[50];
int age;
float gpa;
};
⚠️ نقطهویرگول بعد از آکولاد بسته اجباری است!
ساخت متغیر از struct
struct Student s1;
// مقداردهی هنگام تعریف
struct Student s2 = {"Ali", 20, 18.5};
دسترسی به اعضا با نقطه
strcpy(s1.name, "Sara");
s1.age = 22;
s1.gpa = 19.2;
printf("%s is %d years old", s1.name, s1.age);
typedef برای کوتاهتر شدن
با typedef دیگر لازم نیست هر بار بنویسید struct Student:
typedef struct {
char name[50];
int age;
float gpa;
} Student;
Student s1; // کوتاهتر!
آرایهای از ساختارها
Student class[3] = {
{"Ali", 20, 18.5},
{"Sara", 22, 19.2},
{"Reza", 21, 17.8}
};
printf("%s", class[1].name); // Sara
اشارهگر به struct
برای دسترسی به اعضا از طریق اشارهگر از فلش -> استفاده میشود:
Student s1 = {"Ali", 20, 18.5};
Student *ptr = &s1;
printf("%s", ptr->name); // با فلش
printf("%s", (*ptr).name); // معادل — با نقطه
struct به عنوان پارامتر تابع
void printStudent(Student s) {
printf("%s - %d - %.2f", s.name, s.age, s.gpa);
}
نکات مهم
- struct دادهها را گروهبندی میکند — پایهای برای مفاهیم شیءگرایی در C++
- برای کپی structها میتوانید ساده انتساب کنید:
s2 = s1; - typedef کد را تمیزتر میکند — استفاده از آن توصیه میشود
این مبحث بخشی از دوره آموزش کامل زبان C است.