PDA

View Full Version : ست کردن طول آرایه در زمان اجرا



mr_esmaily
چهارشنبه 11 شهریور 1383, 20:04 عصر
سلام
چجوری میشه طوله یه آرایه رو در زمان اجرا ست کرد؟

Trash
پنج شنبه 12 شهریور 1383, 10:22 صبح
اگر لطف کنی بگی برای کدوم یک از C ,Cpp یا MFC می خوای ممنون میشم . :)

mr_esmaily
پنج شنبه 12 شهریور 1383, 11:36 صبح
سلام
برای ++C می خوام.

Inprise
پنج شنبه 12 شهریور 1383, 14:18 عصر
میتونی یه اشاره گر از جنسی که برای آرایه در نظر گرفتی تعریف کنی ، در موقع لازم اون رو New کنی ( همینجا سایزش رو مشخص میکنی ) و بعد از کاربرد ، Delete اش کنی . مثلا" :


somewhere

int *cMyArray;

somewhere else

cMyArray = new int[50]

after usage

delete [] cMyArray;

یا مثلا" بصورت خلاصه :


int* cMyArray = new int[30];

:)

mr_esmaily
پنج شنبه 12 شهریور 1383, 17:42 عصر
سلام
باتشکر

در صورتی که کار فوق رو انجام بدم اطلاعاته قبلی آرایه از بین نمی روند؟
اگه بخوام طول آرایه توسطه کاربر تعیین بشه چی کار باید بکنم؟

Inprise
پنج شنبه 12 شهریور 1383, 17:54 عصر
معلومه . مقدار مورد نظرت رو از کاربر میگیری و به همون اندازه New میکنی :


int iSize;
cin>>iSize;
int* cMyArray = new int[iSize];

این کد رو نوشتم که فقط مفهوم مشخص بشه وگر نه اینطوری کد نوشتن چندان مرسوم و معقول نیست

خوش باشی :)

Inprise
پنج شنبه 12 شهریور 1383, 17:56 عصر
در صورتی که کار فوق رو انجام بدم اطلاعاته قبلی آرایه از بین نمی روند؟

کدام اطلاعات قبلی ؟ اطلاعات قبلی ای وجود نداره ! تو خودت آرایه رو ایجاد کردی .

mr_esmaily
پنج شنبه 12 شهریور 1383, 18:09 عصر
سلام

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

Inprise
پنج شنبه 12 شهریور 1383, 18:59 عصر
خیر . استفاده از اشاره گر ها باعث میشه برنامه ات با Heap کار کنه که میتونه اندازه های متغیر رو برای انواع قبول کنه اما بدون استفاده از اشاره گر تو فقط میتونی با Stack کار کنی که اندازه انواع روش فیکس هستن . :)

mr_esmaily
پنج شنبه 12 شهریور 1383, 19:09 عصر
سلام
خیلی ممنون :flower:

seyedof
جمعه 13 شهریور 1383, 00:22 صبح
سلام
میتونین برای اینجور کاربردها از vector استفاده کنید. اوونوقت حتی وسط کار هم میتونین اندازه آرایه رو زیاد کنید بدون اینکه اطلاعات قبلی دستکاری بشه.

;std::vector<YOURTYPE> m_MyVector


این نوع داده ای مربوط به STL هستش.

mr_esmaily
جمعه 13 شهریور 1383, 00:31 صبح
سلام
از راهنماییتون ممنونم :flower:

جمعه 13 شهریور 1383, 00:35 صبح
البته فکر کنم در C به Vector می گویند لینک لیست . درسته؟
اگر اشتباه می کنم حتما تذکر بدین
با تشکر

Inprise
شنبه 14 شهریور 1383, 09:54 صبح
وکتور Linked list نیست . برای ایجاد Linked list باید از تمپلیت list استفاده کنی . لازمه توضیح بدم اعضای خانوادهء STL هم با استفاده از اشاره گر وظایفشون رو انجام میدن .

موفق باشید :)

good_devil
شنبه 14 شهریور 1383, 21:18 عصر
شما می تونید از تابع mallocنیز استفاده کنید

ببخشید که جوابهای من خلاصه هستش چون تایپ فارسی من واقعا افتضاحه!!!!!!!!!! :cry:

typeاین 10 minطول کشیذ

شنبه 14 شهریور 1383, 21:28 عصر
خوب من یادمه که برای وکتور می تونستیم اطلاعات رو به صورت به قطار پشت سر هم در بیاریم
در مورد لینک لیست هم همینطور بود.درسته؟
با تشکر

armin390
سه شنبه 27 بهمن 1383, 03:46 صبح
خیر . استفاده از اشاره گر ها باعث میشه برنامه ات با Heap کار کنه که میتونه اندازه های متغیر رو برای انواع قبول کنه اما بدون استفاده از اشاره گر تو فقط میتونی با Stack کار کنی که اندازه انواع روش فیکس هستن
اگر از malloc یا new استفاده کنی مقدار بازگشتی اشاره گر به نا حیه ای از Heap است در غیر این صورت بستگی به global یا local بودنش داره(که بازم به هر حال جز Heap نیست چه اشاره گر چه غیره)