برای دستيابی به عناصر يک ساختار از عملگر نقطه (.) و يا عملگر پيکان (<-) استفاده
می کنيم . عملگر نقطه برای دستيابی به عنصر يک ساختار از طريق نام يک متغير ، مورد
استفاده قرار می گيرد ، به عنوان مثال به دستور زير توجه کنيد :
timeObject.hour = 13;
timeObject.minute = 33;
timeObject.second = 20;
دستور فوق عناصر
hour
و
minute
و
second
متغيری از نوع
Time
را به ترتيب با مقادير 13 و 33 و 20 مقدار
دهی می کند و دستور زير :
برای چاپ کردن عنصرhour
از متغيرtime
Object
به کار می رود . عملگر پيکان که از يک علامت منفی (-) و يک
علامت بزرگتر (<) بدون فاصله بين اين دو علامت تشکيل شده است ،
برای دستيابی به عنصر يک ساختار از طريق اشاره گر مورد استفاده
قرار می گيرد .
دستور فوق برای چاپ کردن عنصر
hour
از متغير
timeObject
توسط اشاره گر
timePtr
به کار رفته است . به جای استفاده از
timePtr
->
hour
برای دستيابی به عنصر
hour
می توان از
(*timePtr).hour
استفاده کرد . توجه داشته باشيد که استفاده از پرانتز در کنار
timePtr*
الزامی می باشد . به عنوان مثال از دستور زير نيز برای چاپ عنصر
hour
از متغير
timeObject
توسط اشاره گر
timePtr
می توان استفاده کرد .
در برنامه زير ساختار
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
وجود دارد. اما در مبحث بعدی در کلاسها خواهيد ديد که می توان
مقدار دهی به اعضا را کنترل کرد.
|