ببخشیدا، ما خیلی زمان شما رو میگیریم!
آره، کد من یه چیزی تو اون مایه هاس که گفتی، مشکلمم حل شد ولی هنوز یه جای این کده برام نامفهمومه:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کار این 3 تا کد چیه؟
الان با این کارا a رو یه آرایه ی دو بعدی تعریف کردیم؟
کد اول یک اشاره گر به اشاره گر رو تعریف کردیم برای فهم بیشتر به زیر توجه کن:
اشاره گر ---> اشارهگر -----> متغیر
تعریف اشاره گر: اشاره گر وسیله ای برای دست یابی به یک متغییر با استفاده از آدرس آن(دسترسی غیر مستقیم به متغیر)
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در این تعریف اشاره گر x* متغیر از انوع صحیح و x هم یک اشاره گر به متغیی نوع داده ی صحیح(یعنی میتواند آدرس یک متغیر صحیح را ذخیره کند)! به کد زیر توجه کن:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا به برسی آن سه خط می پردازیم:
1- تعریف اشاره گر به اشاره گر
2-(البته باید قبل از کروشه * می گذاشتی!! که می شد:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
) اشاره گری(بهصورت آرایه) به تعداد d عدد صحیح اختصاص یافته و آدرس آن در a قرار می گیرد.
3- پس به ازای هر اشاره گر اشاره حافظه ای به تعداد e عدد صحیح اختصاص یافته و آدرس آن در [ a[i قرار می گیرد.
چرا نمیشه مستقیم بگیم:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این روشی که به شما گفتم راحت ترین روش بود اما روش دیگه ای هم هست که معمولا به نام یک اشاره گر به یک آرایه می گن مثل :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نکته ای هم که داره اینه که اگر پرانتز گذاشته نشه متغیر x یک آرایه ی 10 عضوی از نوع اشاره گر به عدد تصحیح تعریف می کند.
که رای آزاد سازی هم به صورت زیره :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما راه اولی که گفتم از چند جنبه نسبت یه این روش دارای برتری هست مثلا این که می توانید برای هر ردیف آرایه ای با اندازه ی متفاوت ایجاد کرد.
از طرف دیگه در روش اول خود آرایه اولیه هم به صورت پویا ایجاد شده. اما در این روش به سورت استا ست لبته می تونی در اول هم بهصورت ایستا تعریف کنی اما در این روش دوم این کار شدنی نیست.
همچنین در روش اول می شه به سادگی و سرعت جابجایی دو ردیف از آرایه اشاره کرد.( در مواقعی که نیاز زیادی به جابجایی ردیف های آرایه داریم، بهتر است از این روش مورد استفاده قرار بگیره. چون در این روش فقط اشاره گر های دو ردیف با هم جابجا می شه در حالی که در روش اول باید کل اعضای دو ردیف رو با هم جابجا کرد.
بعد چرا باید در آخر حافظه رو اینجوری خالی کنیم؟
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
منظورم اینه که چرا نمیشه فقط اینکارو کنیم؟
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چون دو بعدیه؟ یا چون تو دو مرحله تعریف کردیم؟ یا ... ؟
بسیار سپاس!
خیر چون هر دو آرایه پویا هستند و ما در این روش به هر آرایه یه آرایه ی دیگه ای نسبت دادیم پس برای باز پس گیری اون هم باید همه ی اون ها رو باز پس بگیرم اما در همین روش اگر که آرایه آرایه اول استا بود و دیگر نیازی به نوشتن [ delete [a نبود همون حلقه کافی ست
اما در روش دومی که به شما گفتم فقط
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده کرد چون فقط x به ورت پویا اختصاص یافته..