جلسه دوم:
ادامه اشاره گر:
خروجی قطعه کد زیر چیست؟
main(){
1. int i=6,j=9;
2. int *p,*q;
3. p=&i;
4. q=&j;
5. i++;
6. cout<<i<<j<<*p<<*q<<endl;
7. *p=*q+1;
8. cout<<i<<j<<*p<<*q<<endl;
9. p=q;
10. cout<<i<<j<<*p<<*q<<endl;
خروجی:
9 7 9 7
9 10 9 10
9 9 9 10
در خط اول دومتغییر از نوع اینتیجر(صحیح) تعریف کرد و دو مقدار 6 و 9 رو به ترتیب در i, j ریخته است و سپس در خط دوم
دو اشاره گر از نوع اینتیجر ساخت
در خط سوم آدرس خانه i را در اشاره گر p قرار می دهد و در خط چهارم آدرس j را در q میریزد
در خط پنجم مقدار موجود در خانه i رو یک مقدار افزایش می دهدیعنی مقدارش از 6 به هفت افزایش میابد
در خط ششم نیز مقادیر را چا پ میکند:
i که همون مقدارش یعنی 7چاپ میشه ,j هم همینطور9 , در بخش بعدی p* اومده پس اشاره میکنه به محتوای آدرسی که در خود p وجود داره و اون محتوا یعنی مقدار 7 که در i هست رو نشون میده یعنی7 چون آدرس i در p قرار دارد وp* به محتوای خونه i اشاره میکنه
در q* نیز به همین صورت حالا برایj یعنی مقدار 9
در خط هفتم: گفتیم که p* یعنی همون متغییری که آدرسشو توش ریختیم پس در اینجا یعنی i -> پس در اینجا داریم =i و q* هم مثل بالا یعنی j در نتیجه یعنی i=j+1 در نتیجه مقدار i برابر می شود با مقدار j+1 که یعنی 10
در خط هشتم نمایش میدهد 9 10 9 10
در خط نهم هم خود p رو برابر با q قرار می دهد و از اونجایی که ما در بالا آدرس j رو در اشاره گر ً q قرار دادیم پس الان مقدار موجود در q همون ادرس خونه j هست که در این خط این ادرس به درون p ریخته میشه در نتیجه هر دو اشاره گر دارای یک آدرس در خودشون و یعنی به یک ادرس یعنی همون آدرس خونه q اشاره میکنند.
در خط دهم هم مقدار 10 برای i مقدار 9 برای j و مقدار 9 برای p* و مقدار9 برای q* چاپ میشود