شما اینجا هستید

خانه

آموزش ++C - اشاره گر (Pointer) - قسمت دوم

?? ???? ??? ????? ?? ????? ?? ???? ?? ???? (????? ??) ?? ???? C ????? ????.?? ??? ???? ????? ????? ??? ?? ?? ?? ????? ? ??? ???? ?? ????? ?? ????.

??? ??? ????? ?? ??? ?? ???? ??? ?? ??? ????? ??? ?? ?? ???? ??? ?????? ????? ??? ???? ??? C# ?? Java ?? ??? ?? ??? ?????? ?????? ?? ????? ?? ?? ????? ??? ???? ?????? ????? ?? ??? ????? ??? ????? ?? ?????? ?? ???. ???? ???? ? ????? ???? ?? ??? ?? ????? ?? ?????? ?? ???? ???????? ?? ???? ????? ????? ? ??? ?? ????? ???? ??? ????? stack. ????? ?? ??? ????? ????? ?? ?? ???? ???? ??????? ?????? ?? ??? ?? ???? C++ ????? ???? ????. ?? ???? Visual Basic ????? ?????? ??????? ??? ????? ??? ?? ?????? ?? ?????? ???? ByVal ?? ByRef ??????? ????. ByRef ?? ???? ???? ???? ???? ??? ?? ???? ?? ??? ?????? ???? ??? ????? ???? ??? ???? ?? ?? ?? ???? ??? ???. ?? ???? C# ?? ??? ??? ??? ??? ???? ?? ???? ?????? ?? ?????.

?? ??? ???? ???? ??? ?? ???? ????? ?? ?? ??? ?? ???? ?????? ????? ???? ??? ????? ?? ??? ???? ??? ?? ????? ?? ?? ?? ???? ?????? ????? ???? ??? ??? ? ??????? ?? ?? ?? ?? ??? ???????? ???. ?? ???? ?? ?? ???? C ??????? ?? ?? ??? ??? ????? ???. ??????? ????? ?? ????? ?? ?? ???? ???? ??? ?? ????? ? ????? ???? ??? ???? ????? ??? ??? ? ??? ???? ??? ??? ???? ??? ????? ?? ??? ???? ????? ?? ???? ???????? ?????? ?? ????. ??? ???? C ?? C++ ?? ???? ?????? ??? ??? ???. ?? ????? ???? ?????? ?? ????? ???? ?? ???? ? ???? ????. ??? ??? ?? ???? ??? ++C ?? ???? ?? ???. ??? ?? ?? ?? ??? ???? ?????? (????? ?? ?????? ????? ????) ????? ?? ??? ? ?? ??? ???? ?? ???? ?? ????? ?? ??? ? ???? ???????? ?????? ???? ?????? ????? ???? ? ?? ??? ????? ?? ?? ???.( ????? ??? ????? ???? ???? ???? ??? ?? ??? ???? ? performance ???? ??? ????? ?? ?????? ?? C# ??????? ????.)

?? ??? ?? ?? ???? ?? ????? ?? ????:

void swap_numbers(int a, int b)

{

int temp = a;

a = b;

b = temp;

}

int main()

{

int a = 12;

int b = 15;

cout << a;

cout << b;

swap_numbers(a,b);

cout  << a;

cout << b;

 

return 0;

}

??? ?????? ??? ?? ???? ????? ?????? ?? ???? ?????? a , b ??? ?????? ??? ???. ???? ?? ?? ???? ???. ??? ?? ????? ??? a,b ???? ????? ? ?????? ?? ???? ?????? ???? ?????. ???? ????? a ????  swap_numbers ?? ????? a ???? main ?????? ???. ?? ????? ?? ????? ??? ????? a ?? ???? swap_numbers ? ?? ???? ??? ?? ???? ????? a ???? main ?????? ????? ???? ??? ?? ????.

??? ?? ?????? ?? ????? ????? ?? ?? ??? ????? ?? ????? ????:

void real_swap_numbers(int *a, int *b)

{

int temp = *a;

*a = *b;

*b = temp;

}

 

int main()

{

int a = 12;

int b = 15;

cout << a;

cout << b;

real_swap_numbers(&a,&b);

cout  << a;

cout << b;

 

return 0;

}

??? ???? real_swap_numbers ?? ????  swap_numbers ?? ???? main ??? ?????? ?????? ?? ???? ?? ?????? a,b ??? ??? ???. ???? ?? ?? ??? ???? ????? ???? ??? ?? ??? ???? ??? ???

???? ??? ?? ????? 2 ????? a , b ?? ?? ???? swap ??? ????? ???? ??? ?? ?? ?? ??? ???? ???. ?? ????? ?? ???? swap ???? ????? ?? ???? ?? ?? ???? ?? ????? ?? ???? ?? ???? ???? ? ????? ??? ???? ??? ??? ????? ??? ?? ?????? ???? ??? a,b ???? main ????? ???? ???.

12 3426F97D a

15 6563E65E b

??? ???? ???? ??? a,b ?? ????? ?? ???? ??? ?????? ?? ??? ???? ????? ?? ??? ???? ??? ?? ?? ?? ?? ?? ????? ??? ????? ??? ???? ?? ?????? ?? ???? ?? ???? ??? ?? ????? ????? ????.

?? ????? ???? ??? ?? ?????? *a = *b   ?? ???? ???? ????? ???? b ?? ( ?? ?? ??? 15) ?? ????? ???? ?? ????   3426F97D ???? ???. ?? ????? ?? ???:

 

15 3426F97D a
15 6563E65E b

? ?? ???? ???? ??? temp ( ?? 12 ???) ?? ???? b ?? ????? ????? ?? ????:

15 3426F97D a
12 6563E65E b

 ??? ???? ?? ???? swap ???? ?? ????? ????? ??? ???? ??? ?? ???? ( ???? a , b, temp). ??? ??? ????? ?? ?? ?????? ?? ?????? ???? ??? 3426F97D ? 6563E65E ?????.( ??? a , b , temp ?????? ????? ??? ????? ????? ? ???? ?? ??? 2 ??????.)

 

?? ??? ????? ??? ?? ??????? ?????? ??? ????? ?? ?? ?? ???? ???? ?? ????? ???? ?? ?? ?? ?????? ?????? ??? ??? ?? ?? ????  ???? ?? ???? ???? ?? ????? ????? ????? ????? ???? ?? ??? ?? ??????? ?? ???? ???? ???? ????? ????? ?????.

???? ??? ??????:

int a = 12;

int * a_ptr = &a;

int *a_ptr2 = &a;

// , ....

???? ????? ??? a_ptr ? a_ptr2 ?? ????? ?? ( ?? ????) ????? ?? ?? ?? ????? ?? ???? ???? ???? ???? a ?? ?????. ??????? ?? ?? ????? a_ptr2 ? a_ptr ?? ?? ???? ????? ?????.

?? ????? ??? ????? ?? ?? ?? ??? ?????? ?? ?????? ???? ?? ?????? ???? ?? global? ??? ?? ?? ????? ????? ????? ?? ?? ( ???? a_ptr* ?? a_ptr2*) ????? ???? ???? ?????? ( ???? a) ????? ?? ???.

??? ????? ?? ?????? ??? ?? ??? ???? ?????? ????? ??? ?? ??? ?????? ????? ?? ??? ????? ???? ????? ?????? ???? ?? ???? ??? ?? ???? ??? ?? ????? ????? ? ?? ?????? ?? ??? ?? ???? ?? ????? ??? ??????? ?? ?? ??????? ?? ????? ????. ?? ??? ???? ?? ??? ???? ???? ???? ???? ??? ??? ????? ? ???? ??? ?? ?????? ?? ???? ???? ??? ?????? ????? ?????.

???? ???? ?? ??? ??????? ?????? ???? ????? ??? ??? ?? ????? ????. ?? ??? ???? ????  ?? ???? ?? ????? ???? ?? ???? ????? ? ???? ??? ?? ?? ?? ?? ???? ???? ??? ??? ???? ( ??? ????) ? ?? ?? ????? ????? ?????? ?? ?? ?? ???? ?? ??? ????? ???? ??? ?? ??????? ? ??? ????? ?????? ??? ??????. ( ByRef ? ByVal ?? ???? Visual Basic ????? ???? ????? ???. ???? ??? ?? ?? ByRef ????? ?? ???? ??? ?????? ??? ??? ???? ???? ??? ???? ?? ????? ?? ???? ?????? ByVal)

??? ???? ?? ?? ???? ??? ?? ????? ?? ??????:

?? ?????? ???? swap ?? ???? ??????? ?? ????? ?? ???????. ?? ??? ??? ?? ??????? ?? ????? struct ???? ???? ??? ???? ?? ????? ?? ????:

strcut NumberPair

{

int   first;

int   second;

}

NumberPair swap_numbers_by_value(NumberPair nums)

{

NumberPair swapped;

swapped.first = nums.second;

swapped.second= nums.first;

 

return swapped;

}

 

int main()

{

int a = 12;

int b = 15;

cout << a;

cout << b;

 

NumberPair nums;

nums.first = a;

nums.second = b;

nums = swap_numbers_by_value(nums);

a = nums.first;

b = nums.second;

 

cout  << a;

cout << b;

 

return 0;

}

 

 

???? ??? ?? ??? ?????? ? ??? ???? ?? ?? ?? ???? ?? ????? ???. ??? ?? ?????? ????? ?? ?? ???? ????? ???? ?? ?? ??? nums ????? ?? ????? ??? ?? ??? ???? ???? swap_numbers_by_value ?? ???? ?? ????? ???? nums ?? ???? swap_numbers_by_value ??? ?? ????. ??? ?? ???? ????? ???? ?? ??? swapped ????? ??? ? ?????? ??? ? ??? ?? ???? ????? ???? ?? ??? ?? ???. ??? ???? swap_numbers_by_value ???? ????? swapped ?? ?? ????? ????? ????????? ? ??? ????? nums ?? ???? main ??? ?? ???. ??? ?????? ???? ?? ????? ??? a , b ???? ?? ????.

?????? ????? ?? ??? ??????? ?? ???? ?? ??????? ????? ?? ???? ?????? ?? ?? ???? ????? ????. ????? ??? ?? ???? ??? ?? ?? ????? ?? ???? ???? ????? ??? ????? ?? ?? ?? ???? ????? ?? ???? ?? ??????? ?? ????? ??? ?? ???? ???? by value ????. ?? ???? ?????? ????? ?? ?? ?? ????? ?? ?? ???? ??? ???? ???? ?????? ???.

 

?? ???? ??????? ?? ?? struct ???? ??????? ?? ???? ??? ???? ?????? ?? ?? ?? ???? ? ?? ????? ?????? ?????? ???.

 

??? ??????: [3]   ?????   (Intermediate)

 

 

 

 

دیدگاه‌ها

rajebe & ham tu mabhase esharegarha tozih bedin plz

 

آقا امیدوارم در مراحل زندگی موفق باشید.

بسیار عالی و مفید بود.

Khyli Ali bud mrc

سلام ممنون از سایت خوبتون. اگه میشه برنامه ای بنویسید با اشاره گرها که دو تا رشترو بگیره و یکیش کپی کنه بریزه تو متغیر بعدی. ممنون

 

با سلام و خسته نباشید

لطفا درباره اشاره گر ب اشاره گر هم توضیح بدید با یک مثال کاربردی

ممنون

افزودن نظر جدید

درباره من

سلام. به وب سایت شخصی من خوش آمدید.

محمد ذات خواهی هستم متولد سال 66 اهل رشت. سال 89 از دانشگاه شریف با مدرک لیسانس مهندسی شیمی و سال 91 از دانشگاه علم و صنعت ایران با مدرک ارشد کنترل و شبیه سازی فرایند فارغ التحصیل شدم، و در حال حاضر به عنوان مهندس نرم افزار در شرکت گسترش فرایند شریف هستم. از اونجایی که از دبیرستان به الگوریتم و برنامه نویسی علاقه داشتم از همون موقع تو این حیطه کار می کنم. بیشترین توانایی من در طراحی نرم افزار های مهندسی شیمی، طراحی وب و کلا کد نویسی هست. خوش حال میشم بتونم به دیگران کمک کنم خصوصا در حوزه آموزش. سعی می کنم تو این وب سایت مطالب و تجربه هایی که فکر می کنم به درد علاقه مندان به حوزه نرم افزار و برنامه نویسی بخوره قرار بدم. امیدوارم شما هم با نظرات و انتقادات و بحث های علمی تون در ارتقای محتوی علمی این وب سایت من رو یاری کنید.

 

Mohammad Zatkhahi Image

 

.

?>