میخواستم بدونم که معنی عبارت بالا چی میشه؟
لطفا کلمه به کلمه بگید..
ممنون.
Printable View
میخواستم بدونم که معنی عبارت بالا چی میشه؟
لطفا کلمه به کلمه بگید..
ممنون.
همان طور که می دانید * علامت اشاره گر هست و یه اشاره گر به آدرسی از حافظه اشاره می کنه که توی این
آدرس می تونه هر چیزی(مثلا آرایه ای از جمله ها(رشته سبک سی)) باشه واما
در کد شما وجود دو علامت * نشانه ی وجود دواشاره گر هستش که یکی اشاره گر به char هست و دیگری
اشاره گری به اشاره گر قبلی(اشاره گر به char ) هستش.
واما یک رشته(جمله) در سی و سی پلاس چیزی نیست جز اشاره گری به char .
بنابراین کد شما اشاره گری به یک رشته است. رشته هایی که نمی توانند بیش 9 کاراکتر داشته باشند.
من هیچی نفهمیدم...
در ادامه صحبت آقا مهدی، در اینجا a یک آرایه 9 عنصری هست که هر عضوش مثل
یک اشارگر محسوب میشه، در نتیجه باید برای تک تک این اعضا از عملگر new دوباره استفاده کنید و حافظه از نوع char بگیرینکد:a[0] , a[1], a[2], a[3], ....
مثل این مثال که به هر عضو a یک اشارگر از نوع رشته به طول 25 کاراکتر تخصیص داده شده
کد:char **a = new char *[9];
for ( int i = 0; i < 9; i ++ )
a[i] = new char[25];
++++++++++++++
9 تا اشارگر از نوع charنقل قول:
+++++++++++
اشاره گر یا pointer یعنی قسمتی از حافظه که بجای اینکه در اون اطلاعات قرار داشته باشه آدرسی قرار داره که اون آدرس در واقع آدرس اون قسمت از حافظه هست که اطلاعات واقعی در اونجا قرار داره. در زبان C یک ستاره * کنار متغیر اونرو تبدیل به اشاره گر میکنه. مثلا int a یعنی مغیر a قسمتی از حافظه هست که در اون یک عدد قرار میگیره. اما int *a یعنی a یک متغیر هست که در اون یک آدرس قسمتی از حافظه قرار میگیره که اون آدرس یک آدرس از حافظه هست که در اون عدد قرار داره.
توضیحات بقیه کاملا واضح هست.
ببینید به نظر من دانستن اسم اشاره گر یا از اینجور چیزا چندان مهم نیست.(با مرور زمان اسم رو یاد می گیرید.)
بترین راه این هست که کد نویسی کنید و سعی کنید برنامه طوری باشد که جاهایی که نمی دانید و نمی فهمید رو در خروجی چاپ کند.
برنامه رو می نویسن چیزی نیست که حفظش کنن یا...
موفق باشید.