ساختار‌ها

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

حال با توجه به توضیحات بالا به کد زیر نگاه کنید و سعی کنید نتیجه‌ی آن را حدس بزنید و نحوه‌ی کار آن را استدلال کنید:

#include <iostream>
 
using namespace std;
 
struct point {
    int x; // طول
    int y; // عرض
};
 
struct chess_piece {
    point position; // مکان
    string color; // رنگ
    string type; // نوع
}
 
int main() {
    point p;
    p.x = 3;
    p.y = 5;
 
    chess_piece c;
    c.position = p;
    c.color = "white";
    c.type = "rook";
 
    cout << "I have a " << c.color << " " << c.type << " at " << c.position.x << ", " << c.position.y << endl;
}

تعریف

در یک ساختار می‌توان چندین متغیر از انواع داده‌ی اولیه و همچنین از ساختار‌های دیگر تعریف کرد.

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

عملیات تخصیص همانند تخصیص برای انواع داده‌ی اولیه، کار می‌کند.

ساختار‌ها قابلیت‌های بسیار بیشتری در زبان ++C دارند. در مباحث پیشرفته‌تر با این قابلیت‌ها آشنا می‌شود.

قالب تعریف یک ساختار به شکل زیر است:

struct <NAME> {
    <FIELD_TYPE_1> <FIELD_NAME_1>;
    <FIELD_TYPE_2> <FIELD_NAME_2>;
    <FIELD_TYPE_3> <FIELD_NAME_3>;
    .
    .
    .
};