structure یا ساختار در برنامه نویسی C
در این آموزش با انواع ساختار (structure) در برنامه نویسی C آشنا خواهید شد و نحوه تعریف ساختارها و استفاده از آنها را با کمک مثال های مختلف یاد خواهید گرفت.
در برنامه نویسی C، یک ساختار مجموعه ای از متغیرها (از انواع مختلف) تحت یک نام واحد است.
تعریف ساختارها
قبل از ایجاد متغیرهای ساختار باید نوع داده آن را تعریف کنید. برای تعریف ساختار از کلمه کلیدی struct استفاده می شود.
نحوه نوشتن struct
struct نام ساختار
{
نوع داده عضو۱;
نوع داده عضو۲;
…
};
مثال
struct Person
{
char name[50];
int citNo;
float salary;
};
در اینجا، struct Person یک نوع داده مشتق است، حالا می توانید متغیرهایی از این نوع تعریف کنید.
ایجاد متغیرهای struct
وقتی یک ساختار تعریف می شود، هیچ حافظه ای به آن اختصاص داده نمی شود. برای اختصاص حافظه به یک ساختار معین و کار با آن باید متغیرهایی از نوع آن ساختار ایجاد کنید.
در اینجا نحوه ایجاد و تعریف متغیرهای ساختار آورده شده است:
struct Person
{
char name[50];
int citNo;
float salary;
};
int main()
{
struct Person person1, person2, p[20];
return 0;
}
یک روش دیگر برای ایجاد متغیر ساختار،
struct Person
{
char name[50];
int citNo;
float salary;
} person1, person2, p[20];
در هر دو حالت، دو متغیر person1، person2 و متغیر آرایه ای p با ۲۰ عنصر از نوع struct Person ایجاد شده است.
دسترسی به اعضای ساختار
برای دسترسی به اعضای یک ساختار دو نوع عملگر وجود دارد.
۱- عملگر .، عملگر عضو
۲- عملگر ->، عملگر اشاره گر ساختار (در آموزش بعدی بحث خواهد شد)
فرض کنید می خواهید به salary برای person2 دسترسی پیدا کنید:
person2.salary
مثال: محاسبه مجموع دو فاصله
// جمع دو فاصله
#include <stdio.h>
struct Distance
{
int feet;
float inch;
} dist1, dist2, sum;
int main()
{
printf(“1st distancen”);
printf(“Enter feet: “);
scanf(“%d”, &dist1.feet);
printf(“Enter inch: “);
scanf(“%f”, &dist1.inch);
printf(“2nd distancen”);
printf(“Enter feet: “);
scanf(“%d”, &dist2.feet);
printf(“Enter inch: “);
scanf(“%f”, &dist2.inch);
// feet جمع برحسب
sum.feet = dist1.feet + dist2.feet;
// inch جمع برحسب
sum.inch = dist1.inch + dist2.inch;
// تبدیل می شود feet بزرگتر از ۱۲ است، به inch اگر
while (sum.inch >= 12)
{
++sum.feet;
sum.inch = sum.inch – 12;
}
printf(“Sum of distances = %d’-%.1f””, sum.feet, sum.inch);
return 0;
}
خروجی
۱st distance
Enter feet: 12
Enter inch: 7.9
۲nd distance
Enter feet: 2
Enter inch: 9.8
Sum of distances = 15′-5.7″
کلمه کلیدی typedef
از کلمه کلیدی typedef برای ساخت یک نام مستعار یا ساختگی برای انواع داده استفاده می شود. به طور معمول همراه با ساختارها برای ساده سازی تعریف متغیرها استفاده می شود.
این کد
struct Distance{
int feet;
float inch;
};
int main() {
struct Distance d1, d2;
}
معادل کد زیر است،
typedef struct Distance{
int feet;
float inch;
} distances;
int main() {
distances d1, d2;
}
ساختارهای تودرتو
در برنامه نویسی C می توانید یک ساختار را در ساختار دیگری استفاده کنید. مثال،
struct complex
{
int imag;
float real;
};
struct number
{
struct complex comp;
int integers;
} num1, num2;
فرض کنید می خواهید متغیر imag را برای num2 روی ۱۱ تنظیم کنید. به صورت زیر نوشته می شود:
num2.comp.imag = 11;
چرا از ساختارها در زبان C استفاده می شود؟
فرض کنید می خواهید اطلاعات مربوط به شخصی را ذخیره کنید: نام، کد ملی و حقوق. برای ذخیره این اطلاعات می توانید متغیرهای مختلفی به نام name، code و salary ایجاد کنید.
اگر بخواهید اطلاعات چند نفر را ذخیره کنید، چه می کنید؟ باید برای اطلاعات هر شخص به طور جداگانه این متغیرها را تعریف کنید: name1، code1، salary1 و name2، code2، salary2 و …. .
روش بهتر تعریف مجموعه ای از اطلاعات مرتبط به هم تحت یک نام واحد است مانند تعریف ساختار Person و استفاده از آن برای هر شخص.
در آموزش های بعدی اطلاعات بیشتری در مورد ساختار ها کسب خواهید کرد. مانند:
- ساختارها و اشاره گرها
- ارسال ساختارها به تابع