تعداد بازدید: 6902

ساختمان ها

برای دانلود ویدئو روی دکمه دانلود کلیک کنید

آنچه در آموزش ساختمان ها خواهید دید:

  • تعریف نوع ساختمان
  • تعریف متغیر نوع ساختمان ها
  • دسترسی به عناصر ساختمان ها
  • ارزش دهی اولیه به ساختمان ها
  • انتساب ساختمان ها به یکدیگر
  • آرایه ای از ساختمان ها
  • تعریف ساختمان به صورت لانه ای
  • ساختمان ها به عنوان آرگومان تابع
  • اشاره گر ها به ساختمان
  • دسترسی به عناصر اشاره گر ساختمان ها
  • ساختمان بیتی
  • یونیون ها
  • تغییر نام انواع داده با typedef
  • انواع داده شمارشی

تعریف نوع ساختمان

نحوه ی تعریف:

struct <نام ساختمان  > {

  عناصر ساختمان

};

مثال:

struct personnel

 {

  char name[30];

  int person;

  int salary;

};

تعریف متغیر نوع ساختمان

روش اول:

struct اسامی متغیر های ساختمان> نام ساختمان>;

مثال:

struct personnel p1,p2;

روش دوم:

struct <نام ساختمان  > {

  عناصر ساختمان

} اسامی متغیر های ساختمان;
مثال:

struct personnel

 {

  char name[30];

  int person;

  int salary;

}p1,p2;
دسترسی به عناصر ساختمان

<نام عنصر>.<اسم متغیر از نوع ساختمان >

به عنوان مثال:

p1.name[i]  nameمین عنصر آرایه i

p2.person

p1.salary

نحوه ی به کارگیری:

p1.persno = 1234;

gets(p1.name);

printf(“%d”,p1.salary);

ارزش دهی اولیه به ساختمان ها

به عنوان مثال:

struct personnel p1={“Ali Ahamdi”,1234,10000};

struct personnel p1={0};

struct personnel p1={“Ali Ahmadi”};

انتساب ساختمان به یکدیگر

p1=p2;

 

آرایه ای از ساختمان ها

struct personnel p1[10];

تعریف ساختمان به صورت لانه ای

struct date{

  int day;

  int month;

  int year;

};

struct personnel{

  char name[30];

  int persno;

  int salary;

  struct date workdate;

};

ساختمان ها به عنوان آرگومان تابع

انتقال عناصر ساختمان به توابع:

func(p1.salary);

func(p1.persno);

func(&p1.salary);

func(&p1.persno);

func(p1.name); //نیازی به& نیست

انتقال ساختمان به توابع:

به دو روش می توان به توابع ارسال کرد:

1-روش فراخوانی با مقدار 2-روش فراخوانی با ارجاع

مثال:

struct personnel func()

void func(struct personnel <نام متغیر>)

func(p1);

اشاره گر ها به ساختمان

اشاره گر ساختمان به دو منظور استفاده می شود:

  1. امکان فراخوانی با ارجاع را در توابعی که دارای آرگومان از نوع ساختمان هستند را فراهم می کند.
  2. برای ایجاد لیست های پیوندی (linked list) و سایر ساختمان داده هایی که با تخصیص حافظه پویا سروکار دارند به کار میرود.

مثال:

struct prosennel *p1;

p1=&p2;

دسترسی به عناصر اشاره گر ساختمان

به دو روش می توان عمل کرد:

1.ذکر نام اشاره گر در داخل پرانتز و سپس نام عنصر مورد نظر که با نقطه از هم جدا شدند

(*p1).salary

2.استفاده از عملگر <-

p1->salary

ساختمان بیتی

  1. اگر محدودیتی در میزان حافظه وجود داشته باشد، می توان از یک بایت به عنوان چند متغیر منطقی  استفاده نمود.
  2. در حین ارتباط کامپیوتر با دستگاه های خارجی ، بعضی از رابط ها میتوانند اطلاعات موجود در یک بایت را (که هر بیت آن ممکن است معنی خاصی داشته باشد )انتقال دهند.
  3. بسیاری از زیر برنامه های سیستم نیاز به دسترسی به بیتها دارند.

نحوه تعریف:

struct نام ساختمان بیتی{

  <طول فیلد 1> : <نام فیلد  > <نوع فیلد 1>;

  .

  <nنوع فیلد> <nنام فیلد> : <nطول فیلد >;

}

مثال:

struct device{

  unsigned active : 1;

  unsigned ready : 1;

  unsigned error : 1;

}devCode;

نکاتی در موردساختمان های بیتی:

  1. نمی توان به آدرس آن ها مراجعه کرد.
  2. نمی توانند به صورت آرایه تعریف شوند.
  3. به حد زیادی ،وابسته به ماشین هستند.
  4. ترکیبی از ساختمان بیتی و ساختمان معمولی ،ممکن است.

یونیون ها

محلی از حافظه که توسط دو یا چند متغیر به طور اشتراکی مورد استفاده قرار می گیرند.

نحوه ی تعریف:

union <اسم یونیون> {

  عناصر یونیون

}اسامی متغیر ها;

مثال:

union T{

  int i;

  char ch;

  float y;

};

تغییر نام انواع داده باtypedef

به دو دلیل اهمیت دارد:

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

نحوه ی تعریف:

typedef <اسم جدید> <نوع موجود>;

مثال:

typedef struct personnel  prs;

typedef char string[50];

انواع داده شمارشی

نحوه ی تعریف:

enum نام نوع شمارشی{

  عنصر اول ,

  عنصر دوم,

  .

  امnعنصر

};

مثال:

enum color{

  red,

  yellow,

  brown

}color1,color2;

color1=red;

color2=yellow;

if(color1==color2)

{

  …..

}

*enum sample{a,b=5,c,d};

 

تابع ()gotoxy برای انتقال مکان نما در صفحه ی نمایش:

void gotoxy(int x,int y)
{
 COORD c={x,y};
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}

برای اطلاعات تکمیلی به کانال تلگرام مراجعه کنید.

اشتراک گذاری :

دانشجوی کارشناسی فناوری اطلاعات و مسلط به زبان های برنامه نویسی C و C++ هستم. از سال 94 با ورود به دانشگاه علاقه مند به برنامه نویسی و نرم افزار های آزاد شدم.

۰ دیدگاه برای ساختمان ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *