مشاهده نسخه کامل
: مشكل با pointer
سلام خدمت دوستان.
وقتي من از اشاره گر ها استفاده ميكنم حس ميكنم يه جورايي كامپايلر كم مياره (:31:)
انگار پر از اشكال و باگ هستش...(البته نشنيده بگيريد)
_____
كد زير رو ببينيد
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موقعي كه ميخوام يه مقدار رو به طور مستقيم تويه اشاره گري قرار بدم به اشكال ميخوره.
وقتي كامپايل ميكنم خطا نداره ولي وقتي به :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدميرسه , بهم ميخوره. دليلش رو تغريبا ميدونم ولي روش حلش رو نميدونم.
براي يك بعدي (char *name)از
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیداستفاده ميكنم و مشكل حل ميشه ولي براي دو بعدي :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدچي كار كنم؟؟؟
______
(رويه چندتا كامپايلر امتحان كردم اكثرا به اشكال خوردن ولي يكيشون بدون مشكل اجرا كرد. چرا ؟)
سلام
مشکل شما اینه که از ۲ تا ستاره استفاده کردید .هرجا ۲ تا ستاره گذاشتید یعنی یک اشاره گر تعریف کردید که به اشارگری اشاره میکنه که خود اون داره به یک آدرس حافظه اشاره میکنه
:18::18::18:
يعني چي ؟
مشکل شما اینه که از ۲ تا ستاره استفاده کردید .هرجا ۲ تا ستاره گذاشتید یعنی یک اشاره گر تعریف کردید که به اشارگری اشاره میکنه که خود اون داره به یک آدرس حافظه اشاره میکنه
خوب اين ميشه همون چيزي كه من ميخوام ديگه ...
اين كه شما گفتي ميشه شبيه يه ارايه دو بعدي يعني همون چيزي كه من ميخوام...
اساتيد نظري ندارن ؟
سلام pd جان، کم پیدایین:31:
مشکل برنامتون اینه که برای names با new حافظه نگرفتین، و names که به جایی اشاره نمیکنه رو به اون توابع فرستادین
اونجایی که برای numbers حافظه گرفتین برای names هم باید گرفت
names بايد به يك آرايه اشاره كنه تا بتونيد به عنوان يك آرايه از اون استفاده كنيد
names بايد به يك آرايه اشاره كنه تا بتونيد به عنوان يك آرايه از اون استفاده كنيد
:20:
ممنون ولي اين چيزي نيست كه من ميخوام ...
________
سلام pd جان، کم پیدایین
به به ....
سلام استاد, خوبي ؟
شما هم كمتر فعاليت ميكني...
ديدم فروم بي حال شده گفتم دوباره بيايم ... به پا كنيم :31::46:
_________
مشکل برنامتون اینه که برای names با new حافظه نگرفتین، و names که به جایی اشاره نمیکنه رو به اون توابع فرستادین
اونجایی که برای numbers حافظه گرفتین برای names هم باید گرفتاره ولي اين اشاره گر به اشاره گر هست ولي numbers يه اشاره گره ...
خلاصه كه
چه جوري حافظه بگيرم ؟ مثل همون numbers يا فرق داره ؟؟
سلام اين مثال براي من مفيد بود اميدوارم به شما هم كمك كنه
int **array;
array = new int*;
*array = new int;
**array = 2;
*(*array) = 3;
cout << **array;
به یک متغیر ساده انجام شده است. pointer to pointer همون طور که می بینید
خروجی اون 3 خواهد بود.
یک آرایه ی دوبعدی درست کنید. PtoP اما شما می تونید با استفاده از
int **array2;
array2 = new int*[20];
*array2 = new int[2];
array2[0][10] = 5;
cout << array2[0][10];
براتون درست کردم. P2P در این مثال براتون یک آرایه ی دوبعدی ۲ در ۲۰ با استفاده از
خروجی این مثال ۵ خواهد بود.
به به ....
سلام استاد, خوبي ؟
شما هم كمتر فعاليت ميكني...
ديدم فروم بي حال شده گفتم دوباره بيايم ... به پا كنيم
اینجا تبدیل شده به مرکز حل تکالیف برای خیلیا، منم برای همین اینجا زیاد نمیام ...
اره ولي اين اشاره گر به اشاره گر هست ولي numbers يه اشاره گره ...
خلاصه كه
چه جوري حافظه بگيرم ؟ مثل همون numbers يا فرق داره ؟؟
خوب names هم به هر حال یه اشاره گر هست اشارگری که به اشاره گر دیگه اشاره میکنه باید حافظه بهش داده بشه وگرنه کامپایلر حافظه ای براش رزو نمیکنه
مثالی که جناب femme دادن رو یه نگاهی بکنین این مساله رو نشون میده
در کد شما باید این دستور اضافه بشه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینجا تبدیل شده به مرکز حل تکالیف برای خیلیا، منم برای همین اینجا زیاد نمیام ...
ديگه اين رو نميشه كاريش كرد ...
دوستان ممنون از راهنماييهاتون...
vBulletin , Copyright ©2000-2024, Jelsoft Enterprises Ltd.