View Full Version : کمک در مورد این تکه کد
reza10203045
یک شنبه 02 فروردین 1388, 23:01 عصر
با سلام
دوستان میشه کمک کنند که این کد چه کاری رو انجام میده
int a[10]={7,8,9,20,12},*p;
p=a
cout<<*p+2<<*(p+2)<<*++p<<*p++;
Salar Ashgi
دوشنبه 03 فروردین 1388, 00:06 صبح
سلام ، نمیدونم تا چه حد با مبحث Pointer ها (اشاره گر ) تو ++C آشنایی دارید ، کد شما
یه آرایه Integer است که 5 تا اولش مقدار دهی شده اند و بقیه بطور پیش فرض صفر در نظر
گرفته میشوند ، مورد دوم هم یک اشاره گر به int است و چون هر آرایه یک اشاره گر است
به خانه اولش ، پس عمل انتساب میتواند بین آرایه و اشاره گر انجام بگیرد !!!
بررسی خط به خط :
2+p* : مقدار آدرس خانه ای(خانه اول) که اشاره گر به آن اشاره میکند با 2 جمع میشود :
7+2 = 9
( p+2 )* آدرس خانه ای که اشاره گر به آن اشاره میکند ، 2 واحد افزایش یافته و مقدار آن
چاپ میشود : اشاره گر در ابتدا به خانه اول آرایه اشاره میکند! (p+2 : خانه سوم)
p+0 , p+1 , p+2 ==> پس مقدار خانه سوم آرایه چاپ میشود یعنی 9 .
(p ++)* : مثل حالت قبل آدرس یک واحد افزایش یافته و مقدار افزایش یافته اعمال میشود
(حالت پیش افزایش ) مقدار آدرس خانه p+1 که برابر است با : 8 (خانه دوم آرایه)
++p* : مقدار p* یعنی مقدار آدزس خانه اول آرایه که چون حالت پس افزایش است ، مقدار
اشاره گر یک واحد افزایش یافته ولی مقدار قبلی چاپ میشود ، یعنی 7 !
=============================================
امیدوارم مفید بوده باشد !!!!
ولی یه پیشنهاد : به نظر من سعی نکن با یاد گرفتن کدهای خاص ، برنامه نویسی رو یاد
بگیری ، چون در اینصورت این علم تو فقط محدود به همون برنامه هاست و گسترش پیدا
نمیکنه ، حال آنکه اگه از ریشه بررسی کنید و مبحث رو یاد بگیرید ، هر برنامه ای رو میتونید
بنویسید ! البته امیدوارم این حرفامو بعنوان یه صحبت دوستانه در نظر بگیری !!!
موفق و پیروز باشد !!!
javadyousefi
دوشنبه 03 فروردین 1388, 02:05 صبح
سلام ، نمیدونم تا چه حد با مبحث Pointer ها (اشاره گر ) تو ++C آشنایی دارید ، کد شما
یه آرایه Integer است که 5 تا اولش مقدار دهی شده اند و بقیه بطور پیش فرض صفر در نظر
گرفته میشوند ، مورد دوم هم یک اشاره گر به int است و چون هر آرایه یک اشاره گر است
به خانه اولش ، پس عمل انتساب میتواند بین آرایه و اشاره گر انجام بگیرد !!!
بررسی خط به خط :
2+p* : مقدار آدرس خانه ای(خانه اول) که اشاره گر به آن اشاره میکند با 2 جمع میشود :
7+2 = 9
( p+2 )* آدرس خانه ای که اشاره گر به آن اشاره میکند ، 2 واحد افزایش یافته و مقدار آن
چاپ میشود : اشاره گر در ابتدا به خانه اول آرایه اشاره میکند! (p+2 : خانه سوم)
p+0 , p+1 , p+2 ==> پس مقدار خانه سوم آرایه چاپ میشود یعنی 9 .
(p ++)* : مثل حالت قبل آدرس یک واحد افزایش یافته و مقدار افزایش یافته اعمال میشود
(حالت پیش افزایش ) مقدار آدرس خانه p+1 که برابر است با : 8 (خانه دوم آرایه)
++p* : مقدار p* یعنی مقدار آدزس خانه اول آرایه که چون حالت پس افزایش است ، مقدار
اشاره گر یک واحد افزایش یافته ولی مقدار قبلی چاپ میشود ، یعنی 7 !
=============================================
امیدوارم مفید بوده باشد !!!!
ولی یه پیشنهاد : به نظر من سعی نکن با یاد گرفتن کدهای خاص ، برنامه نویسی رو یاد
بگیری ، چون در اینصورت این علم تو فقط محدود به همون برنامه هاست و گسترش پیدا
نمیکنه ، حال آنکه اگه از ریشه بررسی کنید و مبحث رو یاد بگیرید ، هر برنامه ای رو میتونید
بنویسید ! البته امیدوارم این حرفامو بعنوان یه صحبت دوستانه در نظر بگیری !!!
موفق و پیروز باشد !!!
همش درسته غير از اين قسمت :
" ++p* : مقدار p* یعنی مقدار آدزس خانه اول آرایه که چون حالت پس افزایش است ، مقدار
اشاره گر یک واحد افزایش یافته ولی مقدار قبلی چاپ میشود ، یعنی 7 ! "
چون ++p* مقدار p* را چاپ ميكند كه چون در مرحله قبل يعني (p ++)*
p يك واحد افزايش يافته و مقداري كه در اينجا چاپ خواهد شد 8 است
Salar Ashgi
دوشنبه 03 فروردین 1388, 10:02 صبح
همش درسته غير از اين قسمت :
" ++p* : مقدار p* یعنی مقدار آدزس خانه اول آرایه که چون حالت پس افزایش است ، مقدار
اشاره گر یک واحد افزایش یافته ولی مقدار قبلی چاپ میشود ، یعنی 7 ! "
چون ++p* مقدار p* را چاپ ميكند كه چون در مرحله قبل يعني (p ++)*
p يك واحد افزايش يافته و مقداري كه در اينجا چاپ خواهد شد 8 است
دوست عزیز من تو توضیح هم گفتم من دستورات رو خط به خط بررسی کردم ، واگه همشون رو با هم
بررسی کنیم ، حرف شما درسته !!!
موفق و پیروز باشید !!!
javadyousefi
چهارشنبه 05 فروردین 1388, 17:46 عصر
دوست عزیز من تو توضیح هم گفتم من دستورات رو خط به خط بررسی کردم ، واگه همشون رو با هم
بررسی کنیم ، حرف شما درسته !!!
موفق و پیروز باشید !!!
ببخشيد من همه توضيحاتو نخوندم فقط جواب مسئله رو خوندم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.