سلام
چجوری میشه طوله یه آرایه رو در زمان اجرا ست کرد؟
سلام
چجوری میشه طوله یه آرایه رو در زمان اجرا ست کرد؟
اگر لطف کنی بگی برای کدوم یک از C ,Cpp یا MFC می خوای ممنون میشم . :)
میتونی یه اشاره گر از جنسی که برای آرایه در نظر گرفتی تعریف کنی ، در موقع لازم اون رو New کنی ( همینجا سایزش رو مشخص میکنی ) و بعد از کاربرد ، Delete اش کنی . مثلا" :
somewhere
int *cMyArray;
somewhere else
cMyArray = new int[50]
after usage
delete [] cMyArray;
یا مثلا" بصورت خلاصه :
int* cMyArray = new int[30];
:)
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
سلام
باتشکر
در صورتی که کار فوق رو انجام بدم اطلاعاته قبلی آرایه از بین نمی روند؟
اگه بخوام طول آرایه توسطه کاربر تعیین بشه چی کار باید بکنم؟
معلومه . مقدار مورد نظرت رو از کاربر میگیری و به همون اندازه New میکنی :
int iSize;
cin>>iSize;
int* cMyArray = new int[iSize];
این کد رو نوشتم که فقط مفهوم مشخص بشه وگر نه اینطوری کد نوشتن چندان مرسوم و معقول نیست
خوش باشی :)
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
کدام اطلاعات قبلی ؟ اطلاعات قبلی ای وجود نداره ! تو خودت آرایه رو ایجاد کردی .در صورتی که کار فوق رو انجام بدم اطلاعاته قبلی آرایه از بین نمی روند؟
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
سلام
خیلی ممنون مشکلم حل شد ولی برای اطلاعات بیشتر یه سوال دیگه هم داشتم.
نمیشه بدون استفاده از اشاره گر این کار ها رو کرد؟
خیر . استفاده از اشاره گر ها باعث میشه برنامه ات با Heap کار کنه که میتونه اندازه های متغیر رو برای انواع قبول کنه اما بدون استفاده از اشاره گر تو فقط میتونی با Stack کار کنی که اندازه انواع روش فیکس هستن . :)
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
سلام
میتونین برای اینجور کاربردها از vector استفاده کنید. اوونوقت حتی وسط کار هم میتونین اندازه آرایه رو زیاد کنید بدون اینکه اطلاعات قبلی دستکاری بشه.
;std::vector<YOURTYPE> m_MyVector
این نوع داده ای مربوط به STL هستش.
البته فکر کنم در C به Vector می گویند لینک لیست . درسته؟
اگر اشتباه می کنم حتما تذکر بدین
با تشکر
وکتور Linked list نیست . برای ایجاد Linked list باید از تمپلیت list استفاده کنی . لازمه توضیح بدم اعضای خانوادهء STL هم با استفاده از اشاره گر وظایفشون رو انجام میدن .
موفق باشید :)
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
شما می تونید از تابع mallocنیز استفاده کنید
ببخشید که جوابهای من خلاصه هستش چون تایپ فارسی من واقعا افتضاحه!!!!!!!!!! :cry:
typeاین 10 minطول کشیذ
خوب من یادمه که برای وکتور می تونستیم اطلاعات رو به صورت به قطار پشت سر هم در بیاریم
در مورد لینک لیست هم همینطور بود.درسته؟
با تشکر
اگر از malloc یا new استفاده کنی مقدار بازگشتی اشاره گر به نا حیه ای از Heap است در غیر این صورت بستگی به global یا local بودنش داره(که بازم به هر حال جز Heap نیست چه اشاره گر چه غیره)خیر . استفاده از اشاره گر ها باعث میشه برنامه ات با Heap کار کنه که میتونه اندازه های متغیر رو برای انواع قبول کنه اما بدون استفاده از اشاره گر تو فقط میتونی با Stack کار کنی که اندازه انواع روش فیکس هستن