آموزش کار با ساختمان های بیتی و اشاره گر به ساختمان در c++

آموزش برنامه نویسی C++

ساختمان های بیتی در c++ :

در c++ میتوان بیت های حافظه را به صورت مستقیم دسترسی پیدا کرد.

برای این منظور می توانیم از ساختمان های بیتی استفاده کنیم. اجزای ساختمان ها

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


struct نام الگوی ساختمان
{
    طول برحسب بیت : نام     نوع جزء ;
};

مثال :


struct bt1
{
    unsigned a:1 ;
    unsigned b:3 ;
    signed c:5 ;
} n;

نکته :

حافظه ای که برای متغیرهای از نوع ساختمان های بیتی اختصاص داده می شود

مضربی از بایت می باشد.

کار با union در c++ :

مجموعه ای از متغیرها که از یک حافظه به صورت اشتراکی استفاده می کنند

یک union را تشکیل میدهند به عبارت دیگر unionها ساختمان هایی هستند که اجزاء آنها

به یک طور مشترک ذخیره می گردند.

آموزش کار با ساختمان بیتی union در c++


union نام
{
    نام و نوع اجزاء
};

مثال :


union un1
{
    int a;
    float f;
    char ch;
};

متغیرهایی که از نوع union un1 تعریف شوند 4 بایت اشغال می کنند.

( به اندازه طول بزرگترین جزء ) union un1 اجزاء بر یکدیگر منطبق می باشند.

بنابراین هر لحظه فقط یکی از اجزاء union قابل استفاده خواهد بود.

کار با unionها مشابه آنچه که در مورد ساختمان ها گفته شده می باشد. ساختمان ها در

unionها را می توان به صورت تو در تو تعریف کرد.

مثال :

ساختمان بیتی در c++ تعریف کنید که از آن بتوان هم برای ذخیره کردن اطلاعات کارمند و هم

اطلاعات دانشجو استفاده کرد.


struct student
{
    long int st_no;
    float ave;
};
struct employee
{
    int cmp_no;
    long int salary;
};
struct emp_stu
{
    int Io_no;
    char name[20];
    char family[30];
    char fname[20];
    int tag;
    union un1
    {
       struct student stu;
       struct employee emp;
    }inf;
}n;

توجه :

ساختمان emp_stu ساختمان بیتی است که در c++ برای ذخیره سازی اطلاعات کارمند یا دانشجو

استفاده می گردد.قسمت * مربوط به اطلاعاتی می شود که بین کارمند و دانشجو مشترک می باشند.

در برنامه با خود قرارداد میکنیم که اگر tag صفر باشد متغیر برای ذخیره کردن اطلاعات دانشجو

استفاده گردد و فقط از جزء stu استفاده کنیم و اگر tag یک باشد به این معناست که در متغیر اطلاعات

یک کارمند ذخیره گشته و فقط از جزء emp استفاده می نماییم.

n. Inf. stu. st_no= 2133

کار با اشاره گر به ساختمان در c++ :

این اشاره گر در c++ به صورت زیر تعریف می گردد:


struct نام اشاره گر * نام الگوی ساختمان ;
struct st1 * p;
       st1 * p;

برای دسترسی به اجزاء یک ساختمان از طریق اشاره گر به صورت زیر عمل می کنیم:

نام جزء  <-  نام اشاره گر

در این دستور در جزء a از محلی که p به آن اشاره می کند مقدار 20 را قرار می دهد.

p -> a=20

مثال :


void main ()
{
   struct st1 n , *p;
   p= &n;
   p -> =20;
   cout<< n-a;
   cout<< p -> a;
}