Struct یکی از انواع ساختار داده است. این نوع توسط کاربر تعریف می‌شود. هدف از تعریف Struct، جمع‌آوری متغیرهایی با نوع‌های مختلف در دسته‌بندی یکسان است. ساختار Struct را تا حدودی می‌توان شبیه به کلاس‌ در برنامه نویسی دانست. برای درک اینکه Struct چیست باید به سراغ زبان برنامه نویسی C برویم. انواع مختلفی مانند int  و char  و float  در زبان C وجود دارند که می‌توان از آن‌ها برای تعریف متغیر و ذخیره داده استفاده کرد. همچنین آرایه‌ها را داریم که برای دسته‌بندی مجموعه‌ای از داده‌ها با نوع یکسان در کنار هم به کار برده می‌شوند. اما در دنیای واقعی، داده‌ها همیشه از یک نوع نیستند. به این دلیل است که ساختار Struct در زبان C معرفی شده است.

فهرست مطالب این نوشته
997696

در این مطلب از مجله فرادرس توضیح داده‌ایم که Struct چیست و چه کاربردی دارد. ابتدا آن را تعریف کرده و سپس روش ساخت متغیرهای Struct را بیان کردیم. علاوه بر این موارد، چند مثال مختلف درباره استفاده از متغیرها و اشاره‌گرهای Structure را نیز همراه با مثال نمایش داده‌ایم.

Struct چیست؟

Structure در زبان C تقریبا مانند سایر انواع داده، مثل Integer و Float است. Struct، توسط کاربر تعریف شده و از روی انواع داده در زبان C مشتق می‌شود. برای تعریف کردن نوع سفارشی که عناصری با انواع مختلف را در یک دسته قرار می‌دهد از کلمه کلیدی struct  استفاده می‌کنیم. تفاوت‌های بین آرایه و Struct را در فهرست زیر ارائه کرده‌ایم.

  • آرایه‌های زبان C مجموعه همگنی از عناصر با نوع یکسان هستند.
  • Structure می‌تواند عناصری با نوع‌های مختلف را به صورت ذخیره شده در کنار یکدیگر جمع‌آوری کند.
  • تمام عناصر درون Structure توسط نام مخصوص به خودشان شناخته می‌شوند.

اغلب اوقات نیاز داریم که با مقادیری از انواع مختلف کار کنیم. این مقادیر معمولا روابط مشخصی با یکدیگر دارند. برای مثال، کتاب‌ها را می‌توان توسط تیتر، نام نویسنده، قیمت، تعداد صفحات و غیره توصیف کرد. در این توصیف، برای تعریف تیتر و نام نویسنده از نوع استرینگ در برنامه نویسی استفاده می‌کنیم. به همین‌ ترتیب، معمولا قیمت با نوع Double در برنامه نویسی و تعداد صفحات هم با نوع عدد صحیح تعریف می‌شوند. در بعضی از زبان‌های برنامه نویسی – مانند زبان C – برای تعریف اشياء دارای چنین صفاتی به‌جای استفاده از چهار متغیر مختلف می‌توان تمام این مقادیر را در Struct جمع کرده و متغیری با Struct تعریف کرد.

در بخش بعد می‌بینیم که روش تعریف متغیر Struct چیست.

روش تعریف و ساخت Struct چیست؟

برای تعریف Structure در زبان C باید از کلمه کلیدی struct  استفاده کنیم. بعد از آن هم structure tag  یا نام Structure مورد نظر را می‌نویسیم. سپس تمام اعضای درون این Structure را داخل آکولادهای باز و بسته همراه با نوع مربوط به هر کدام تعریف می‌کنیم.

همین‌طور که اشاره کردیم برای تعریف Structure باید از عبارت struct  استفاده کنیم. عبارت struct  نوع جدیدی را تعریف می‌کند. نوعی که خودش از چندین نوع مختلف تشکیل شده است.

سینتکس تعریف Struct

در این بخش از مطلب، سینتکس مورد استفاده برای تعریف struct  را نمایش داده‌ایم.

در ساختار بالا وجود structure tag  اختیاری است. همچنین تمام اعضا مانند عملیات عادی تعریف متغیر، تعریف می‌شوند. برای مثال‌، می‌توان به کدهایی مانند int i;  یا float f;  یا سایر روش‌های معتبر برای تعریف متغیر، اشاره کرد.

فضای مفهومی از مانیتوری که کدنویسی نشان می‌دهد در کنار المان‌های رنگی که با خطوط نازکی به همدیگر متصل هستند.

در آخر تعریف Structure و قبل از آخرین سمیکالون«; » می‌توانیم یک یا چند نمونه از متغیر struct  را ایجاد کنیم. اما این بخش هم اختیاری است.

مثالی برای تعریف Struct

در مثال پایین، ساختاری را برای کتاب تعریف می‌کنیم. در این struct  مهمترین جزئیات مربوط به کتاب‌ را ذخیره می‌کنیم.

همین‌طور که در کد بالا مشاهده می‌کنید، بعد از تعریف کردن ساختار book، متغیری به نام book1  را با این ساختار ایجاد کرده‌ایم. البته می‌توان برای تعریف متغیر به صورت جداگانه و در عبارت‌های دیگری هم اقدام کرد.

توجه: تعریف book  به معنای تعریف نوع جدیدی است که نمونه‌های آن از جنس کتاب هستند. وقتی متغیری از این نوع تعریف می‌کنیم، انگار کتاب مشخصی را تعریف کرده‌ایم. به همین صورت برای انجام کار‌ها فقط می‌توان از book1  استفاده کرد و نه book.

آشنایی با فیلم‌ های آموزشی فرادرس برای برنامه نویسی با زبان C

زبان برنامه‌ نویسی C، یکی از مهم‌ترین زبان‌های برنامه نویسی در دنیاست. این زبان سال‌هاست که سهم زیادی از بازار طراحی و تولید نرم‌افزارها و برنامه‌های حرفه‌ای را در دست خود نگه‌داشته. به دلیل توانایی برقرار کردن ارتباط مستقیم با لایه‌های سخت‌افزار کامپیوتر توسط زبان برنامه نویسی C از آن در طراحی و مدیریت انواع سیستم‌های سخت‌افزاری و سیستم عامل‌ها استفاده می‌‌‌شود. حتی بعضی از دیگر زبان‌های برنامه نویسی نیز با کمک زبان C توسعه داده شده‌اند. به همین دلیل معمولا افراد علاقه‌مند به آموزش برنامه نویسی، زبان C را به عنوان یکی از اولین گزینه‌های آموزشی انتخاب می‌کنند.

مجموعه آموزش برنامه نویسی سی C – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی C هدایت شوید.

تقریباً بیشتر سیستم‌های عامل به زبان C نوشته شده‌اند. اغلب کامپیوترها، گوشی‌های هوشمند و تبلت‌ها سیستم عامل مبتنی بر زبان C دارند. زبان‌های برنامه نویسی مانند ++C و Objective C و #C و حتی زبان برنامه‌نویسی «پایتون» (Python) و چندین زبان دیگر نیز به وسیله آن نوشته شده‌اند. بنابراین فرادرس به عنوان تولیدکننده فیلم‌ها و مطالب آموزشی و علمی تلاش کرده است تا مجموعه آموزش حرفه‌ای را برای این زبان فراهم کند. در نتیجه علاقه‌مندان به برنامه‌نویسی می‌توانند با کمک فرادرس، زبان C را یاد بگیرند. در پایین چند مورد از فیلم‌های آموزشی زبان C را معرفی کرده‌ایم.

ایجاد متغیر با Struct

برای دسترسی و مقداردهی به اعضای درون Structure، ابتدا باید متغیری را برای آن ایجاد کنیم. برای ساختن متغیر با Structure، ابتدا باید کلمه کلیدی struct  را بنویسیم. سپس نام خود Structure نوشته می‌شود. در نهایت هم باید نامی را بنویسیم که برای متغیر در نظر گرفته‌ایم. با استفاده از متغیر Structure ساخته شده می‌توانیم به تمام اعضای درون struct  دسترسی داشته و مقدار آن‌ها را تغییر دهیم.

برای آموزش روش کار با Structure در زبان سی می‌توانیم از بررسی روش استفاده از آن در زبان ++C هم استفاده کنیم. زیرا این زبان‌ها از لحاظ ساختاری و مفهومی نزدیکی بسیار زیادی به هم دارند. هر چند شاید از لحاظ سینتکس دارای تفاوت‌های جزئی باشند. به همین منظور پیشنهاد می‌کنیم که فیلم آموزش رایگان نوع شمارشی، استراکچر و یونیون در برنامه نویسی C++‎ را از فرادرس مشاهده کنید. به منظور کمک به مخاطبان مجله، لینک این فیلم را در پایین نیز قرار داده‌ایم.

مثالی برای ایجاد متغیر با Struct

در این بخش از مطلب، برای ساخت متغیر struct  مثالی را پیاده‌سازی کرده‌ایم. کدی که در زیر آمده روش ساخت متغیر را نشان می‌دهد.

معمولا Structure-ها قبل از نوشتن اولین تابع و دقیقا بعد از عبارت‌های include تعریف می‌شوند. با این روش می‌توان از این نوع جدید – مشتق شده از چند نوع مختلف – برای ساختن متغیرهایش در تمام توابع استفاده کرد.

مقداردهی به Struct

برای مقداردهی به Structure فقط کافی است که مقدار مربوط به تمام عناصر را درون آکولاد‌های باز و بسته قرار دهیم.

مثالی برای مقداردهی به Struct

در کادر زیر، کد مربوط به مقداردهی متغیر book1 را نوشته‌ایم. این متغیر از Structure ساخته شده است. این کد ساختار ثابتی دارد. فقط تعداد مقدارها، نوع و محتوای آن‌ها به صورت فرضی تعریف شده‌اند.

روش دسترسی به اعضای درون Struct چیست؟

برای دسترسی به اعضای درون Struct، در ابتدا باید نمونه‌ای از متغیر با Struct تعریف کنیم. بعد از نوشتن نام متغیر، عملگر نقطه «.» را قرار می‌دهیم. بعد از نقطه هم می‌توانیم نام اعضای مختلف را قرار بنویسیم.

مثال اول برای دسترسی به اعضای درون Struct

در بخش بالا متغیر book1  از Structstruct book تعریف شده است. تمام چهار عضو درون این متغیر با استفاده از عملگر نقطه «.» قابل دسترسی هستند. یعنی اینکه book1.title  اشاره به عنصر تیتر کتاب دارد. مقدار book1.author  اشاره به نام نویسنده کتاب دارد و عبارت book1.price  هم به قیمت کتاب اشاره می‌کند. در آخر هم با استفاده از چهارمین عنصر به نام book1.pages  تعداد صفحات کتاب ذخیره کرده یا اعلام می‌کنیم.

در مثال زیر، روش دسترسی به تمام اعضای ساختار book  نشان داده شده است.

کد بالا را اجرا کرده و خروجی را مشاهده کنید. بعد از اجرای کد بالا باید خروجی به شکل زیر به کاربر نشان داده شود.

Title:  Learn C 
Author: Dennis Ritchie 
Price:  675.500000
Pages:  325 
Size of book struct: 48

مثال دوم برای دسترسی به اعضای درون Struct

در برنامه مثال قبل، تغیرات کوچکی را در ساختار تعریف شده ایجاد کردیم. در این بخش می‌خواهیم عملیات مربوط به تعریف نوع را همراه با عملیات مربوط به ایجاد متغیر به صورت همزمان اجرا کنیم. این تکنیک را در کدهای زیر نمایش داده‌ایم.

توجه کنید که اگر متغیر struct  را به روش بالا تعریف کنیم، دیگر نمی‌توانیم با استفاده از آکولاد‌های باز و بسته به آن مقداردهی کنیم. در عوض باید تمام مقدارهای مربوط به تمام عناصر را به صورت یک به یک به آن‌ها تخصیص بدهیم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول به کاربر نمایش داده می‌شود.

Title: Learn C 
Author: Dennis Ritchie 
Price: 675.500000 
Pages: 325

کپی کردن Structure

با استفاده از عملگر تخصیص «=» یا همان مساوی می‌توان هر Structure را به صورت مستقیم کپی کرد. همچنین می‌توانید از عملگر تخصیص برای اختصاص دادن مقدار یکی از اعضای Structure به همان عضو متناظر در Structure دیگری استفاده کنید.

فرض کنیم که از Struct تعریف شده برای کتاب دو متغیر با نام‌های book1  و book2  ایجاد کرده‌ایم. متغیر book1  را هم‌زمان با تعریف مقداردهی کردیم. اکنون تصمیم گرفته‌ایم تا همان مقدارها را به اعضای درون متغیر book2  هم تخصیص بدهیم.

ظرفی رنگی که برای جمع آوری دایره‌های رنگی استفاده می‌شود. پس زمینه مشکی - Struct چیست

برای انجام این کار – همین‌طور که در کد زیر نمایش داده‌ایم – می‌توان عناصر را به صورت مجزا برابر با یکدیگر قرار داد.

مثال کپی کردن Structure

فرض کنیم از روی Struct یکسانی چند متغیر مختلف تولید کرده‌ایم. یکی دیگر از روش‌های کپی کردن داده‌های آن متغیر‌ها، مساوی هم قرار دادن آن‌ها است. با این کار مقدارهای مربوط به هر عنصر در متغیر سمت راست مساوی به مقدار متناظر با خودش در متغیر سمت چپ مساوی اختصاص داده می‌شود. در کد زیر، با استفاده از این روش، تمام اطلاعات متغیر book1  را در عناصر متناظر در متغیر book2  کپی کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول به کاربر نمایش داده می‌شود.

Title: Learn C 
Author: Dennis Ritchie 
Price: 675.500000 
Pages: 325 
Size of book struct: 48

استفاده از Struct به عنوان آرگومان تابع

روش استفاده از Structure-ها به عنوان آرگومان تابع دقیقا مانند روش استفاده از سایر متغیرها و «اشاره‌گر» (Pointers) است.

در این بخش از مطلب این مسئله را با کمک مثال مناسبی توضیح داد‌ایم.

مثالی برای استفاده از Structure به عنوان آرگومان تابع

در کدهای زیر، ابتدا struct Books  را تعریف کردیم. به چند نکته توجه کنید.

  1. برای مقدار دادن به اعضای struct  از تابع strcpy()  استفاده کردیم.
  2. داخل بدنه اصلی برنامه، در زمان ارسال متغیر struct  به تابع تعریف شده، فقط نام متغیر را برده‌ایم.
  3. در زمان تعریف خود تابع – بعد از بدنه اصلی برنامه – نام struct  و متغیر آن را با عبارت struct Books book  و به شکل کامل استفاده کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول به کاربر نمایش داده می‌شود.

Book title : C Programming
Book author : Nuha Ali
Book subject : C Programming Tutorial
Book book_id : 6495407
Book title : Telecom Billing
Book author : Zara Ali
Book subject : Telecom Billing Tutorial
Book book_id : 6495700

Structureهای تودرتو

Structure تودرتو یعنی اینکه از یک یا چند متغیر Structure درون Structure دیگری استفاده کنیم. همین‌طور که می‌توانیم در Struct-ها اعضایی با نوع‌های int  و char  داشته باشیم، از متغیری با Struct هم می‌توان به عنوان یکی از اعضای struct  دیگر استفاده کرد.

در زبان برنامه نویسی C، نوع‌های مختلفی برای داده‌ها تعریف شده‌‌اند که برنامه‌ نویس با توجه به موقعیت از بین آن‌ها انتخاب می‌کند. تمام این نوع‌ها را می‌توان به عنوان اعضای درون Structure تعریف کرد. برای آشنا شدن با انواع داده در زبان C می‌توانید به مطلب مربوط به آن در مجله فرادرس مراجعه کنید.

در کدهای بالا می‌بینیم که ساختار متغیر birthday  از Structstruct birth  است. این متغیر درون struct student  به صورت تودرتو قرار گرفته است. نکته مهم اینجاست که نمی‌توان از متغیری با Structstruct student  به عنوان یکی از عناصر درون متغیر struct student  استفاده کرد.

جعبه زرد رنگی با نوشته Structure - Struct چیست

توجه کنید struct  که به صورت تودرتو قرار می‌گیرد باید قبل از struct  بیرونی تعریف شود. با استفاده از علامت نقطه «.» می‌توانیم به struct  تعریف شده در داخل struct  بیرونی دسترسی داشته باشیم. دقیقا همان‌طور که به بقیه اعضا دسترسی داریم.

چند متغیر struct  با هر نوعی، در کنار هم می‌توانند به عنوان عضو درونی متغیر struct  دیگر استفاده ‌شوند.

روش استفاده از اشاره گرها در مقابل Struct چیست؟

همین‌طوری که در زبان C با استفاده از اشاره‌گرها به بقیه متغیرها اشاره می‌کنیم، به متغیرهای struct  هم می‌توان اشاره کرد.

در این بخش ابتدا روش تعریف اشاره‌گری را نشان می‌دهیم که به struct  اشاره می‌کند.

تعریف اشاره گر برای Struct

در کادر زیر، سینتکس مربوط به تعریف اشاره‌گر به ساختار struct  را نمایش داده‌ایم.

مقداردهی اشاره گر با استفاده از Struct

فرض کنیم که – مانند کد بالا – اشاره‌گری به نام struct_pointer  تعریف کرده‌ایم. به سادگی می‌توان آدرس مربوط به متغیر Structure را درون متغیر اشاره‌گر ذخیره کرد. برای پیدا کردن آدرس متغیر Structure فقط کافی است که قبل از نام Structure از علامت «&» استفاده کنیم.

در برنامه‌ نوشته‌ شده در کادر زیر، ابتدا Struct با نام book تعریف کرده‌ایم. سپس از روی آن متغیری به نام book1 ایجاد و مقداردهی کردیم. در خط آخرهم اشاره‌گری با نام strptr تعریف کردیم. این اشاره‌گر می‌تواند آدرس متغیر book1 را در خود ذخیره کند.

استفاده از اشاره گر Struct برای دسترسی به اعضا

برای اینکه با استفاده از اشاره‌گر struct_pointer به اعضای تعریف شده در آن struct  دسترسی داشته باشیم، باید از عملگر  استفاده کنیم. در کد زیر روش انجام این کار نمایش داده شده است.

زبان برنامه نویسی C، نماد  را تعریف کرده تا برای اشاره به اشاره‌گر Struct به کار برده شود. این نوع از عملگرها با نام «عملگر غیرمستقیم» (Indirection Operator) شناخته می‌شوند. البته از نام «عملگر عدم ارجاع» (Dereference Operator) هم برای این عملگر اختصاصی struct  استفاده می‌شود.

مثال برای استفاده از اشاره گر Struct

در مثال زیر، strptr  اشاره‌گری است که به متغیر struct book book1  اشاره می‌کند. بنابراین عبارت strrptr→title  برای برگرداندن تیتر یا عنصر title  از درون متغیر struct  به کار برده می‌شود. عبارت strrptr→title  دقیقا همان کاری را می‌کند که عبارت book1.title  انجام می‌دهد.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول به کاربر نمایش داده می‌شود.

Title: Learn C 
Author: Dennis Ritchie 
Price: 675.500000 
Pages: 325

توجه: عملگر «.» برای دسترسی به عناصر struct  و با استفاده از متغیر struct  استفاده می‌شود. اما اگر بخواهیم که به عناصر struct  از طریق اشاره‌گری دسترسی پیدا کنیم که آدرس آن را ذخیره کرده است، باید از عملگر «غیرمستقیم» (-> ) استفاده کنیم.

متغیرهای struct  هم مانند متغیرهای معمولی هستند که با نوع‌های اصلی تعریف شد‌ه‌اند. یعنی اینکه تمام موارد نوشته شده در فهرست زیر را می‌توانیم انجام دهیم.

  • می‌‌توان آرایه‌ای با عناصر از جنس Struct ایجاد کرد.
  • می‌توان متغیر struct  را به عنوان پارامتر به توابع ارسال کرد.
  • می‌توان از متغیر‌های struct  به عنوان مقدار برگشتی توابع استفاده کرد.
  • و غیره
خطوط آبی پر رنگ اشکال هندسی را بهم دیگر متصل کرده‌اند. پس زمینه مشکی

توجه: همیشه در زمان تعریف متغیرها یا اشاره‌گرهای Struct باید از Struct به عنوان پیشوند نام در آن عبارت استفاده کنیم.

از متغیرهای Struct می‌توان به منظور اجرای کارهای مختلفی استفاده کرد. برای مثال می‌توانیم به پایگاه‌های داده، سیستم‌های مدیریت فایل و مدیریت ساختارهای داده پیچیده‌ای مانند درخت‌ها و لیست‌های پیوندی اشاره کنیم.

بیت فیلد

«بیت فیلد» (Bit Fields) به بسته‌بندی داده‌ها در Structure کمک می‌کنند. به طور خاص در زمان‌هایی که باید در مصرف حافظه یا فضای ذخیره‌سازی داده‌ها صرفه‌جویی کرد، استفاده از این تکنیک بسیار مفید است. دو مورد از رایج‌ترین مثال‌های این مسئله را در فهرست زیر بیان کرده‌ایم.

  • بسته‌بندی چندین شیء مختلف در یک «کلمه ماشین» (Machine Word): برای نمونه، فلگ‌های تک‌بیتی را می‌توان در یک واحد حافظه دسته‌بندی کرد.
  • خواندن فرمت‌ فایل‌های خارجی: با کمک این روش می‌توان فرمت‌های غیراستانداردی مانند اعداد صحیح ۹ بیتی را مدیریت کرد.

تعریف فیلد بیتی

زبان برنامه نویسی C به توسعه‌دهندگان کمک می‌کند که در تعریف Structure، فیلد بیتی ایجاد کنیم. برای انجام این کار بعد از نام متغیر باید طول بیتی آن را هم مشخص کنیم. در کدهای زیر، روش تعریف بیت فیلد را درون ساختار struct  نمایش داده‌ایم.

در کد بالا، متغیر packed_struct  شامل ۶ عضو است. ۴ مورد از آن‌ها – از f1  تا f4  - فلگ‌های تک‌بیتی هستند. یک عضو ۴ بیتی به نام type  و یک عضو ۹ بیتی با نام my_int  هم دارد.

زبان C به شکل خودکار این بیت فیلد را با هدف صرفه‌جویی در فضا بسته‌بندی می‌کند. البته به شرط آنکه بیشترین طول فیلد کمتر یا مساوی اندازه هر متغیر Integer در کامپیوتر شود. اگر این شرط برقرار نشده و فیلدی از این اندازه فراتر برود، بعضی از کامپایلر‌ها شاید به حافظه اجازه بدهند که از فضای بخش‌های دیگر استفاده کنند. در حالی که سایر کامپایلرها فیلد بعدی را در فضای حافظه جدیدی ذخیره می‌کنند.

مثال‌ هایی از Struct در زبان های مختلف

تقریبا بیشتر زبان‌های برنامه نویسی، برای گروه‌بندی چند متغیر از نوع‌های مختلف در موجودیت یکسان، شامل ظرف خاصی هستند. این موجودیت‌ها – چه اینکه با نام Struct شناخته شوند یا نام‌های دیگر – کارکردی شبیه به یکدیگر دارند.

برای اینکه بدانیم نکته مهم در تعریف Struct چیست، باید به سینتکس آن توجه کنیم. در زبان‌های مختلف سینتکس‌های متفاوتی برای تعریف این موجودیت وجود دارند. در این بخش از مطلب، چند مثال مختلف از تعریف Struct یا ساختارهای شبیه به آن را در زبان‌های برنامه نویسی مشهور نمایش داده‌ایم.

struct در زبان برنامه نویسی #C

ابتدا کدهای مربوط به تعریف Struct در زبان برنامه نویسی #C را نمایش داده‌ایم. در تمام مثال‌های این بخش، ساختارهایی را برای نمایش بعضی از مشخصات انسان‌های عادی ایجاد کرده‌ایم. این مشخصات شامل، نام، سن و قد افراد است.

struct در زبان برنامه نویسی ++C

زبان برنامه نویسی ++C به غیر از ساختار Struct از ساختار کلاس هم پشتیبانی می‌کنید. در بخش‌های بعدی به صورت خلاصه تفاوت بین Struct و کلاس در ++C را بیان کرده‌ایم.

struct در زبان برنامه نویسی جاوا اسکریپت

زبان برنامه نویسی جاوا اسکریپت هم از این ساختار پشتیبانی می‌کند. در تمام این زبان‌های برنامه نویسی تفاوت اندکی را در سینتکس مشاهده می‌کنیم. اما مفهوم همیشه یکسان است. مفهوم این ساختار به موجودیتی اشاره می‌کند که داده‌های مرتبط با هم را در کنار هم و در یک گروه قرار می‌دهد.

struct در زبان برنامه نویسی پایتون

برای اینکه ببینیم در زبان برنامه نویسی پایتون، روش تعریف Struct چیست، باید به مفهوم کلاس توجه کنیم.

یادگیری C و C++‎ با کمک فیلم های آموزشی

++C زبان برنامه‌ نویسی همه‌منظوره و عمومی است که استفاده گسترده‌ای در علوم کامپیوتر دارد. این زبان از مفاهیم شی گرایی، وراثت و پلی مورفیسم پشتیبانی می‌کند. C و C++‎ جزو زبان‌های تخصصی برنامه‌ نویسی هستند. سرعت بالا، قدرت زیاد و استحکام این زبان‌ها باعث شده که علی رغم سن نسبتا بالای آن‌ها در انجام پروژه‌های حساس جزو گزینه‌های اول باشند. فرصت‌های شغلی زبان‌های C و C++‎ در حال زیادتر شدن‌اند و برنامه‌ نویسان حرفه‌ای را به خود جذب می‌کنند. به همین دلیل فرادرس با هدف پشتیبانی از افراد علاقه‌مند به زبان‌های C و C++‎، فیلم‌های آموزشی زیادی را تولید و منتشر کرده‌ است. در پایین چند مورد از این فیلم‌ها را معرفی می‌کنیم.

مجموعه آموزش برنامه نویسی C و C++‎ – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی C و C++‎ هدایت شوید.

در صورت علاقه با کلیک بر روی تصویر بالا، به صفحه اصلی این مجموعه آموزشی رفته از فیلم‌های بیشتری نیز دیدن کنید.

تفاوت کلاس و مجموعه با Struct چیست؟

همانند ساختار Struct دو مفهوم دیگر با نام‌های «کلاس» (Class) و «مجموعه» (Union) وجود دارند. این مفاهیم برنامه نویسی هم می‌توانند متغیرهای مختلف با نوع داده‌های متفاوتی را در یک گروه دسته‌بندی کنند. در این بخش به بیان تفاوت‌های بین این ساختارها با هم پرداخته‌ایم.

تفاوت مجموعه با Struct چیست؟

هر دوی این ساختارها در زبان C وجود دارند. هر دوی این ساختارها انواع مختلف متغیرها را با نوع‌داده‌های متفاوت تحت موجودیتی با نام یکسان جمع‌آوری می‌کنند. اما در زمان ذخیره‌سازی داد‌ها رفتار متفاوتی از خود نشان می‌دهند. تفاوت اصلی درباره روش ذخیره‌سازی داده‌ها است. در فهرست زیر، تفاوت این ساختارها با یکدیگر را به صورت خلاصه بیان کرده‌ایم.

  • تعریف: هم مجموعه و هم Struct نوع‌های تعریف شده توسط کاربر هستند. Struct برای دسته‌بندی نوع‌های مختلف در یک موجودیت به کار برده می‌شود. اما مجموعه به ذخیره‌سازی انواع مختلف در موقعیت یکسانی از حافظه کمک می‌کند.
  • کلمه کلیدی: برای تعریف Struct از کلمه کلیدی struct  استفاده می‌شود. برای تعریف نوع مجموعه هم کلمه کلیدی union  به کار برده می‌شود.
  • اندازه: اندازه هر موجودیت Struct برابر با مجموعه اندازه‌‌های تمام اعضای درون آن به‌علاوه فضای اضافی – البته در صورت نیاز – برای تمیز دادن داده‌ها از هم است. اما اندازه هر موجودیت مجموعه برابر با اندازه بزرگترین عضو درون آن به علاوه فضای اضافی برای نمایش فاصله بین اعضا است.
تعداد زیادی مکعب مربع های رنگی که با کمک لوله‌های نازکی به یکدیگر متصل شده‌اند.

تفاوت کلاس با Struct چیست؟

برای بررسی تفاوت کلاس با Struct باید به سراغ زبان ++C برویم. در زبان ++C عملکرد Struct و کلاس تقریبا شبیه به یکدیگر است. اما دو تفاوت کوچک وجود دارند. مهم‌ترین این تفاوت‌ها پنهان‌سازی جزئیات مربوط به پیاده‌سازی است. Struct-ها به صورت پیش‌فرض جزئیات مربوط به پیاد‌ه‌سازی خود را پنهان نمی‌کند. اما کلاس‌ها به طور پیش‌فرض تمام جزئیات مربوط به پیاده‌سازی خود را پنهان می‌کنند. منظور از پنهان‌سازی در مقابل افرادی است که از این ساختارها در کدها استفاده می‌کنند.

در جدول زیر نشان داده‌ایم که تفاوت‌های بنیادین بین کلاس و Struct چیست.

«کلاس» (Class) Struct
اعضای درون کلاس به صورت پیش‌فرض محرمانه هستند. اعضای درون Struct به صورت پیش‌فرض عمومی و در دسترس همه هستند.
برای تعریف کلاس از کلمه کلیدی class  استفاده می‌شود. برای تعریف Struct از کلمه کلیدی struct  استفاده می‌شود.
این ساختار معمولا برای انتزاعی ساختن موجودیت‌ها با قابلیت ارث‌بری استفاده می‌شود. معمولا برای قرار دادن نوع‌های مختلف در یک گروه به کار برده می‌شود.

سینکس مورد استفاده برای تعریف کلاس در زبان ++C به شکل زیر است.

سینتکس مورد استفاده برای تعریف Struct در زبان ++C به شکل زیر است.

جمع‌بندی

در این مطلب گفتیم که Struct چیست و فهمیدیم که یکی از ساختارهای برنامه‌نویسی است. این ساختار در زبان C برای کمک به ساخت نوع‌های سفارشی توسط برنامه‌نویس تعریف شده است. ساختار Struct تا حدودی شبیه به ساختار کلاس در زبان‌های شیءگرایانه است. ساختار Struct به توسعه‌دهندگان کمک می‌کند که متغیرهایی از انواع مختلف را در موجودیت یکسانی جمع‌آوری کنند. برای دانستن اینکه Struct چیست باید به چند نکته مهم توجه کنید. این موارد را به شکل خلاصه در فهرست زیر نوشته‌ایم.

  • ظرف Struct شامل نوع‌های مختلف در برنامه نویسی می‌شود.
  • نظم اعضای تعریف شده درون Struct مهم است.
  • هر عنصر درون Struct دارای نوع مشخصی است.
  • تمام این عناصر در کنار هم قرار گرفته و موجودیت جدیدی را تشکیل می‌دهند.

در این مطلب از مجله فرادرس فهمیدیم که Struct چیست و چگونه تعریف می‌شود. سینتکس مورد نیاز برای نوشتن متغیر Struct را نمایش دادیم. ساختارهای Struct تو‌درتو را بررسی کرده و روش ارسال Struct به عنوان پارامتر به توابع را نیز نشان داده‌ایم.

source

توسط expressjs.ir