در این آموزش، در مورد struct در برنامه نویسی ++ C یاد خواهید گرفت؛ این که struct چیست، چگونه تعریف می شود و برای چه استفاده می شود.
struct مجموعه ای از متغیرها با نوع متفاوت، تحت یک نام واحد است. شبیه به class است، که هر دو مجموعه ای از داده با نوع مختلف را نگه می دارند.
به عنوان مثال: می خواهید اطلاعاتی در مورد یک فرد ذخیره کنید: نام ، سن و حقوق. به راحتی می توانید متغیرهای مختلف name ، age، salary را برای ذخیره این اطلاعات به صورت جداگانه ایجاد کنید.
با این حال، در آینده می خواهید اطلاعات مربوط به چند نفر را ذخیره کنید. حالا باید متغیرهای مختلفی برای هر شخص ایجاد کنید: name1، age1، salary1، name2، age2، salary2
با این کار کد بسیار زیاد و گیج کننده خواهد شد. همچنین، از آنجایی که ارتباطی بین متغیرها (اطلاعات) وجود ندارد، این کار می تواند غلط باشد.
یک رویکرد بهتر این است که مجموعه ای از اطلاعات مرتبط به هم تحت نام واحد Person داشته باشیم، و برای هر شخص از آن استفاده کنیم. با این کار کد بهتر، خوانا و کارآمد به نظر می رسد.
این مجموعه از اطلاعات مرتبط به هم تحت نام واحد Person یک ساختار است.
چگونه می توان در ++C یک struct پیاده سازی کرد؟
کلید واژه struct به همراه یک شناسه (نام struct) ساختار را تعریف می کند.
سپس داخل braces ها، می توانید یک یا چند عضو (اعلان متغیرها در داخل براکت) از آن ساختار را تعریف کنید. مثلا:
struct Person
{
char name[50];
int age;
float salary;
};
در اینجا یک ساختار Person تعریف شده که دارای سه عضو است: name، age و salary.
هنگامی که یک struct ایجاد می شود، هیچ حافظه ای به آن اختصاص نمی یابد.
تعریف struct تنها یک طرح برای ایجاد متغیرها است. می توانید آن را به عنوان نوعی داده تصور کنید. مثل وقتی که یک عدد صحیح به صورت زیر تعریف می کنید:
int foo;
int مشخص می کند که متغیر foo تنها یک عنصر عدد صحیح را نگه می دارد. به طور مشابه، struct هم مانند نوع داده یا datatype عمل می کند.
نکته: بعد از تعریف struct حتما از (؛) استفاده کنید.
چگونه یک متغیر از نوع struct تعریف کنیم؟
بعد از اینکه ساختار person را به شکل بالا پیاده سازی کردید متغیر را بصورت زیر تعریف کنید:
Person bill;
در اینجا، متغیر ساختار bill تعریف شده که از نوع Person است.
هنگامی که متغیر struct تعریف می شود، آنگاه حافظه مورد نیاز توسط کامپایلر اختصاص داده می شود.
با توجه به اینکه سیستم ۳۲ بیتی یا ۶۴ بیتی دارید، حافظه متغیر float، ۴ بایت، حافظه int برابر ۴ بایت و حافظه char 1بایت است.
از این رو، ۵۸ بایت حافظه برای متغیر bill اختصاص داده می شود.
چگونه به یک عضو struct دسترسی پیدا کنیم؟
به اعضای متغیر struct با استفاده از یک نقطه (.) دسترسی پیدا می کنیم.
فرض کنید می خواهید به عضو age از متغیر bill دسترسی پیدا کنید و ۵۰ را به آن اختصاص دهید. می توان این کار را با استفاده از کد زیر انجام داد:
bill.age = 50;
مثال : struct در C++
برنامه C++ مقدار دهی به یک عضو از struct و نمایش آن.
#include <iostream>
using namespace std;
struct Person
{
char name[50];
int age;
float salary;
};
int main()
{
Person p1;
cout << “Enter Full name: “;
cin.get(p1.name, 50);
cout << “Enter age: “;
cin >> p1.age;
cout << “Enter salary: “;
cin >> p1.salary;
cout << “\nDisplaying Information.” << endl;
cout << “Name: ” << p1.name << endl;
cout <<“Age: ” << p1.age << endl;
cout << “Salary: ” << p1.salary;
return 0;
}
خروجی
Enter Full name: Magdalena Dankova
Enter age: 27
Enter salary: 1024.4
Displaying Information.
Name: Magdalena Dankova
Age: 27
Salary: 1024.4
در اینجا ساختار struct تعریف شده که سه عضو name، age و salary دارد.
در داخل تابع ()main یک متغیر ساختار p1 تعریف شده است. سپس، از کاربر خواسته می شود اطلاعات را وارد کند و اطلاعات وارد شده توسط کاربر، نمایش داده می شود.