سلام

خوبین ؟ من برگشتم.

داشتم یه پست خفن برای شروع مباحث شی گرایی درست می کردم کار طولانی شد حالا فعلا اینو داشته باشین تا اونی که گفتم چند روز آینده آماده شه. یکی از دوستان هم منبع برای ساختمان داده خواسته بود که من نمیشناسم(شرمنده

)
آز آن جا که استراکچر ها انقدر ساده هستند که فقط با مثال قابل درک اند در این جلسه چند تابع ساده و مفید برای کار با استراکچرها را بررسی می کنیم
در این توابع از همان استراکچر personکه در جلسات قبل تعریف نمودیم استفاده می کنند.
struct date{
int yy,mm,dd;
};
struct person{
char name[40];
date tt;
float grade;
};
نکته:
نکته مهمی که یادم رفت بگم اینه که تعریف استراکچر ها باید قبل از تابع main باشند واین یک قاعده ی عمومی است و نه یک قاعده ی کلی یعنی ممکن است گاهی استراکچری جای دیگری تعریف شود.که بعنوان یک دانشجو با این حالت مواجه نخواهید شد(به احتمال زیاد)
در کلیه ی مثال ها فر ض می کنیم استراکچری از نوع personبه نام myvarداریم
مثال1:
تابع خواندن یک استراکچر از صفحه کلید.
void read(person *p){
cin>>p->name;
cin>>p->grade;
cin>>p->tt.dd;
cin>>p->tt.mm;
cin>>p->tt.yy;
}
1.فرا خوانی این تابع به صورت read(&myvar);خواهد بود.
2.آرگمان تابع به صورت اشاره گر تعریف شده چرا که باید مقادیر خوانده شده به برنامه ی اصلی بر گردانده شود.
3.به نحوه ی دسترسی به فیلدهای اشاره گر pتوجه کنید .(استفاده از عملگر(<-))
4.بعد از دسترسی به فیلد ttبرای دسترسی به فیلد های dd,mm,yyاز عملگر نقطه استفاده شده چرا که tt یک استراکچر است نه یک اشاره گر.
باز نویسی تابع بالا با استفاده از رفرنس ها بجای اشاره گر
void read(person &p){
cin>>p.name;
cin>>p.grade;
cin>>p.tt.dd;
cin>>p.tt.mm;
cin>>p.tt.yy;
}
فرا خوانی این تابع به صورت read(myvar);می باشد.
مثال 2:
تابع تعویض محتویات دو استراکچر:
void swap(person *p1,person *p2){
person tmp=*p1;
*p1=*p2;
*p2=tmp;
}
1.مانند همه اشاره گر ها برای دسترسی یه محتویات اشاره گر استراکچرها باید ار عملگر ستاره استفاده کنیم.
2.آرگمان ها به صورت اشاره گر هستند چون باید تغییرات به برنامه ی اصلی منتقل شود.
3.فراخوانی این تابع به صورت swap(&myvar1,&myvar2);است
باز نویسی لین تابع با رفرنس ها:
void swap(person &p1,person &p2){
person tmp=p1;
p1=p2;
p2=tmp;
}
3.فراخوانی این تابع به صورت swap(myvar1, myvar2);است
دانلود پی.دی.اف این پست 
فعلا 


ادامه مطلب
+ نوشته شده توسط سجاد مهدی بیرقدار در پنجشنبه هفدهم آبان 1386 و ساعت
21:41 |