«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
پرسش و پاسخ سی پلاس پلاس بچه های پرومیکرز :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

قدیمیا دلم براتون تنگ شده... فقط معرفی کنید توی پیامک یا تماس یاد بیارید.
اگه جواب ندادم شاید موقعیت نداشته باشم.
بگید توی پیام از بچه های پرومیکرز هستید.

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

پرسش و پاسخ سی پلاس پلاس بچه های پرومیکرز

دوشنبه, ۵ مرداد ۱۳۹۴، ۰۱:۵۸ ب.ظ
http://promakers.ir/showthread.php?tid=2891

number = zptr غلط هست. چون zptr یک pointer(اشاره گر) هست و به آدرس نامعلومی از حافظه اشاره می کنه و آدرس ها چون بر مبنای hexa decimal(مبنای شانزده) هستند نمیشه اونا رو در متغیر number که از نوع دیگه ای(int) ذخیره کرد.

شما باید محتوای جایی که اشاره گر بهش اشاره می کنه رو بریزید توی متغیر number به این صورت :
کد PHP:
number=*zptr 

++zptr درسته هم باعث میشه اشاره گر به خانه ی بعدی حافظه اشاره کنه(خود متغیر اشاره گر 2 بایت اشغال می کنه در CPP. اگه نوع int یا float باشه یعنی هر سلول به اندازه ی 2 بایت int یا 6 بایت float اشغال می کنه)

اگه بخواید با اشاره گر ها خانه های متوالی آرایه رو نشون بدید و چاپ کنید می تونید یه حلقه whie not null یا for بنویسید که هر بار به مقدار اشاره گر یکی اضافه کنه و سپس محتوای سلول مد نظر رو بخونه(برای خوندن محتوای جایی که اشاره گر بهش اشاره می کنه کافیه قبل از متغیر اشاره گر یک علامت ستاره بذاریم happy )

دستور زیر هم اشتباهه :
کد:
for(i = 0 ; i <= 5 ;i++)
   cout << zptr[i];
چون طبق تعریف داریم :
کد PHP:
int *zptr
طبق کد فوق، zptr یک اشاره گر هست( که به سلول های نوع int اشاره می کنه)
پس نمیشه zptr[i] بنویسیم . باید اینطوری کد رو اصلاح کنی:
کد PHP:
for(<= ;i++)
{
   
cout << *(zptr);
zptr++;//zptr=zptr+1;


در مورد اشاره گرها می خوای بیشتر بدونی کتاب کنکور C مقسمی یا cpp پارسه رو بخون. PDF رایگان توی اینترنت ریخته.مشکلی بود بپرسbig grin
کد زیر هم مشکل داره(اشکال منطقی:یعنی ظاهرا مشکل ممکنه نداشته باشه اما ممکنه در لحظه ی کامپایل خطا بده):
کد:
int *num;
cout << *num;
دلیل :
num یک پواینتر(اشاره گر) هست و به فضای نوع int باید اشاره کنه.اما ما مشخص نکردیم به کجا اشاره کنه پس محتوای قسمتی از حافظه که آدرسش رو نمی دونیم داریم با cout به خروجی(console out=cout) می بریم و ممکنه خطاهایی دریافت کنیم یا یه محتوای غیر قابل فهم یا چند کاراکتر بیخود یا هنگ کنه برنامه.
پس باید ابتدا اشاره گ رو اشاره بدی به یک نوع(حتما int چون نوع اشاره گر ما int هست). مثال اینطوری :
کد زیر محتوای متغیر num رو با استفاده از اشاره گر p چاپ می کنه :
کد PHP:
int num=25;//یه عدد دلخواه
int *p;
p=&num//  آدرس متغیر نامبر رو میریزه توی اشاره گر پی
cout<<*p;//محتوای جایی که پی بهش اشاره می کنه رو چاپ می کنه 

کدهای زیر هم غلط هستند:
کد:
short * numptr,result;
void * genericptr = numptr;
result = * genericptr  + 7;
زیرا متغیرهای result و numptr از نوع short int (نصف فضای int) هستند و باید مقداردهی genericptr هم از همون نوع short باشه تا بینشون بتونیم تبادل دیتا کنیم.
ضمنا اشاره گر از نوع void نداریم.یعنی نه اینکه نداریم داریم ولی محتوای جایی که اشاره گر از نوع void داره بهش اشاره می کنه رو نمی شه برگشت داد مگر اینکه تبدیل نوع یا Type cast (تبدیل نوع موقت) انجام بدیم و تبدیلش کنیم به short اینطوری:
کد:
short * numptr,result;
void * genericptr = numptr;
result =(short *) genericptr  + 7;//محتوای جایی که اشاره می کند را تبدیل به شورت کرده و با هفت جمع و در ریزالت می ریزد

منبع در مورد اشاه گر نوع void:
http://www.learncpp.com/cpp-tutorial/613-void-pointers/

لطفا سوالات در گروه یونیتی گیم اور که در کانال gameoverblog متعاقبا اعلام می گردد بپرسید.
با تشکر

https://telegram.me/gameoverblog


موافقین ۰ مخالفین ۰ ۹۴/۰۵/۰۵
مدیرکل

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی