تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 3 از 3

نام تاپيک: چه جوري ميشه مقدار افست يه آرايه رو يه متغير نا معلوم گذاشت؟

  1. #1
    پروفشنال mahdi7s's Avatar
    تاريخ عضويت
    Sep 2007
    محل سكونت
    هر جایی می تونه باشه
    پست ها
    757

    14 چه جوري ميشه مقدار افست يه آرايه رو يه متغير نا معلوم گذاشت؟

    سلام
    من در برنامه هاي زيادي به مشكل زير برخوردم لطفا اگه كسي جوابمو ميدونه دريغ نكنه

    اگه متغييري از نوع int كه مقدار آن نا معلوم هست و امكان كمتر يا بيشتر شدن آن در هنگام اجراي برنامه وجود دارد رو داشته باشيم و اگر بخواهيم آن متغير در پايان(پس كم شدن يا افزوده شدن به متغيير) بجاي افست يه آرايه قرار بگيرد ارور هاي زمان كامپايل از جمله
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    از طرف كامپايلر دريافت مي كنيم.

    سوال من اينه كه چه جوري ميشه چنين متغييري رو بجاي افست يه آرايه قرداد كه برنامه بد.ن خطا كامپايل شود؟

  2. #2
    آخر فروم باز Mehran NZ's Avatar
    تاريخ عضويت
    Sep 2006
    پست ها
    2,208

    پيش فرض

    سلام
    من در برنامه هاي زيادي به مشكل زير برخوردم لطفا اگه كسي جوابمو ميدونه دريغ نكنه

    اگه متغييري از نوع int كه مقدار آن نا معلوم هست و امكان كمتر يا بيشتر شدن آن در هنگام اجراي برنامه وجود دارد رو داشته باشيم و اگر بخواهيم آن متغير در پايان(پس كم شدن يا افزوده شدن به متغيير) بجاي افست يه آرايه قرار بگيرد ارور هاي زمان كامپايل از جمله
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    از طرف كامپايلر دريافت مي كنيم.

    سوال من اينه كه چه جوري ميشه چنين متغييري رو بجاي افست يه آرايه قرداد كه برنامه بد.ن خطا كامپايل شود؟
    باید از اشاره گرها استفاده کنی
    آموزشش و نوشته بودم اتفاقا همین کد وهم توی مثالهاش گذاشته بودم خواستی یه نگاه بنداز

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  3. این کاربر از Mehran NZ بخاطر این مطلب مفید تشکر کرده است


  4. #3
    داره خودمونی میشه humphry's Avatar
    تاريخ عضويت
    Jan 2009
    محل سكونت
    تهران
    پست ها
    81

    پيش فرض

    احتمالا جوابت رو گرفتی اما خوب من هم یه توضیحی می دم. باید از dynamic alocation استفاده کنی. در این روش تخصیص حافظه به اندازه مورد نیاز از فضای heap که اگه علاقه داشته باشی می تونی راجع بهش تحقیق کنی فضا گرفته می شه. توی زبان c این موضوع در خود زبان وجود نداره اما با استفاده از تابع malocمیتونی کارت رو انجام بدی.(فکر کنم stdio.h باشه حالا دیگه با خودت) این تابع به گونه ایه که یه اشاره گر به اول فضای اختصاص داده شده برمیگردونه. ورودیش هم تعداد بایتیه که می خوای پس اول از همه یه پوینتر از نوع مورد نظر نیاز داری که آدرس رو ذخیره کنی.
    البته موضوع خیلی مهم اینه که فضای هیپ محدوده و توی برنامه های سنگین اگه این حافظه آزاد نشه به مشکل بر میخوری توی c تابع free با ورودی پوینتر و خروجی ووید استفاده می شه

    cin >> m;
    int *p;
    p=(in *)maloc(8m);
    .
    .
    .
    free(p);
    در سی پلاس پلاس خیال ما رو راحت کردن و new ,delete به زبان اضافه شده که مشابه قبله با سینتکس زیر :
    cin >> m;
    int *p;
    p=new int[m];
    .
    .
    .
    delete [ ]p;
    یه ارایه دو بعدی هم برات می سازم و دیلیت می کنم ...

    int
    k;
    cin >> k;
    char **a;
    a=
    newchar*[k];
    for(int i=0;i<k;i++)
    {
    a[i]=
    newchar [k];
    }


    for
    (int i=1;i<k;i++)
    delete []a[i];
    delete []a;

  5. این کاربر از humphry بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •