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

   برای دستيابی به عناصر يک ساختار از عملگر نقطه (.) و يا عملگر پيکان (<-) استفاده می کنيم . عملگر نقطه برای دستيابی به عنصر يک ساختار از طريق نام يک متغير ، مورد استفاده قرار می گيرد ، به عنوان مثال به دستور زير توجه کنيد :

timeObject.hour = 13;
timeObject.minute = 33;
timeObject.second = 20;

   دستور فوق عناصر hour و minute و second متغيری از نوع Time را به ترتيب با مقادير 13 و 33 و 20 مقدار دهی می کند و دستور زير :

cout << timeObject.hour;

   برای چاپ کردن عنصرhour از متغيرtime Object به کار می رود . عملگر پيکان که از يک علامت منفی (-) و يک علامت بزرگتر (<) بدون فاصله بين اين دو علامت تشکيل شده است ، برای دستيابی به عنصر يک ساختار از طريق اشاره گر مورد استفاده قرار می گيرد .

cout << timePtr -> hour;

   دستور فوق برای چاپ کردن عنصر hour از متغير timeObject توسط اشاره گر timePtr به کار رفته است . به جای استفاده از timePtr -> hour برای دستيابی به عنصر hour می توان از (*timePtr).hour استفاده کرد . توجه داشته باشيد که استفاده از پرانتز در کنار timePtr* الزامی می باشد . به عنوان مثال از دستور زير نيز برای چاپ عنصر hour از متغير timeObject توسط اشاره گر timePtr می توان استفاده کرد .

cout << (*timePtr).hour;

   در برنامه زير ساختار Time مورد استفاده قرار گرفته است و توسط روش ارسال آرگومان با ارجاع به توابع ، شیء dinnerTime که از نوع ساختار Time می باشد به توابع printUniversal و printStandard ارسال شده است.

#include <iostream.h>
 
struct Time { 
             int hour; // 0-23 (24-hour clock format)
             int minute; // 0-59
             int second; // 0-59
            };
 
void printUniversal( const Time & );
void printStandard( const Time & );
 
int main()
{
  Time dinnerTime;
 
  dinnerTime.hour = 18;
  dinnerTime.minute = 30;
  dinnerTime.second = 0;
 
  cout << "Dinner will be held at ";
  printUniversal( dinnerTime );
  cout << " universal time,\nwhich is ";
  printStandard( dinnerTime );
  cout << " standard time.\n";
 
  dinnerTime.hour= 29; //set hour to invalid value
  dinnerTime.minute= 73; //set minute to invalid value
 
  cout << "\nTime with invalid values: ";
  printUniversal( dinnerTime );
  cout << endl;
 
  return 0;
}
 
void printUniversal( const Time &t )
{
  cout << (t.hour<10 ? "0":"") << t.hour << ":"
       << (t.minute<10 ? "0":"") << t.minute << ":"
       << (t.second<10 ? "0":"") << t.second;
}
 
 
void printStandard( const Time &t )
{
  cout << ( ( t.hour == 0 || t.hour == 12 ) ?
                    12 : t.hour % 12 ) << ":"
       << (t.minute<10 ? "0":"") << t.minute << ":"
       << (t.second<10 ? "0":"") << t.second
       << ( t.hour < 12 ? " AM" : " PM" );
}

خروجی برنامه فوق به صورت زير می باشد:

Dinner will be held at 18:30:00 universal time,
which is 6:30:00 PM standard time.
 
Time with invalid values: 29:73:00

 در برنامه فوق مشاهده کرديد ، امکان مقدار دهی نادرست به شيئی از نوع ساختارTime  وجود دارد. اما در مبحث بعدی در کلاسها خواهيد ديد که می توان مقدار دهی به اعضا را کنترل کرد.

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد