PDA

View Full Version : کمک در مورد این تکه کد



reza10203045
یک شنبه 02 فروردین 1388, 22:01 عصر
با سلام
دوستان میشه کمک کنند که این کد چه کاری رو انجام میده

int a[10]={7,8,9,20,12},*p;
p=a
cout<<*p+2<<*(p+2)<<*++p<<*p++;

Salar Ashgi
یک شنبه 02 فروردین 1388, 23: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, 01: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, 09:02 صبح
همش درسته غير از اين قسمت :

" ++p* : مقدار p* یعنی مقدار آدزس خانه اول آرایه که چون حالت پس افزایش است ، مقدار

اشاره گر یک واحد افزایش یافته ولی مقدار قبلی چاپ میشود ، یعنی 7 ! "

چون ++p* مقدار p* را چاپ ميكند كه چون در مرحله قبل يعني (p ++)*

p يك واحد افزايش يافته و مقداري كه در اينجا چاپ خواهد شد 8 است

دوست عزیز من تو توضیح هم گفتم من دستورات رو خط به خط بررسی کردم ، واگه همشون رو با هم

بررسی کنیم ، حرف شما درسته !!!

موفق و پیروز باشید !!!

javadyousefi
چهارشنبه 05 فروردین 1388, 16:46 عصر
دوست عزیز من تو توضیح هم گفتم من دستورات رو خط به خط بررسی کردم ، واگه همشون رو با هم

بررسی کنیم ، حرف شما درسته !!!

موفق و پیروز باشید !!!

ببخشيد من همه توضيحاتو نخوندم فقط جواب مسئله رو خوندم