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

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




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

نام تاپيک: این یه خطا در C++ هست؟

  1. #1
    پروفشنال Petros's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    سوال بسیار جالب و بجایی بود
    پست ها
    974

    پيش فرض این یه خطا در C++ هست؟

    سلام

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نمیدونم چرا با اینکه اندیس اول این آرایه صفره ولی بازم کارش رو انجام میده. شما میدونید؟

  2. #2
    اگه نباشه جاش خالی می مونه pooria_googooli's Avatar
    تاريخ عضويت
    Feb 2010
    محل سكونت
    کاشان
    پست ها
    402

    پيش فرض

    الان مشکل شما چیه ؟ خب آرایه ها از صفر شماره گذاری میشن نه از 1 .

  3. #3
    پروفشنال Petros's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    سوال بسیار جالب و بجایی بود
    پست ها
    974

    پيش فرض

    دایی جون مشکل اینجاست که آرایه من 2 تا سطر به طول 10 داره. سطر اول مختص Ali هستش که بقیه اون با 0\ پر میشه.

    سطر دوم که میشه a[1][0]s با James. اما آرایه من اندیس اولش تغییر نمیکنه و هر دو رو چاپ میکنه!!!!

  4. #4
    حـــــرفـه ای sin2x=2sinxcosx's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    2,234

    پيش فرض

    خب وقتی سطر اول شما 10 خونه ای هستش چرا حلقه رو 20 بار لوپ می زنین ؟
    وقتی 20 بار لوپ می زنه بعدش میره سطر بعدی آرایه دیگه .
    چون متغیرها با آدرسها سرو کار دارن و اندیس و اینا نمی فهمن چیه . ابعاد آرایه هم آدرس هاشون پشت سر همه .

  5. 2 کاربر از sin2x=2sinxcosx بخاطر این مطلب مفید تشکر کرده اند


  6. #5
    پروفشنال Petros's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    سوال بسیار جالب و بجایی بود
    پست ها
    974

    پيش فرض

    خب وقتی سطر اول شما 10 خونه ای هستش چرا حلقه رو 20 بار لوپ می زنین ؟
    چون 2 تا رشته به طول 10 دارم. اگه رشته من هر دو به طول 10 بود باید 20 بار لوپ بخوره.

    من متوجه نمیشم. پردازش به این صورته که وقتی به a[0][0]s رسید از طریق آدرس بره سراغ خونه اول. چون اندیس ها این نشونی رو بهش دادن. حالا من میام میگم a[0][11]s. همچین آدرسی از دید من وجود نداره!!! کامپایلر اینو چه طور تفسیر میکنه؟

  7. #6
    حـــــرفـه ای sin2x=2sinxcosx's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    2,234

    پيش فرض

    چون 2 تا رشته به طول 10 دارم. اگه رشته من هر دو به طول 10 بود باید 20 بار لوپ بخوره.

    من متوجه نمیشم. پردازش به این صورته که وقتی به a[0][0]s رسید از طریق آدرس بره سراغ خونه اول. چون اندیس ها این نشونی رو بهش دادن. حالا من میام میگم a[0][11]s. همچین آدرسی از دید من وجود نداره!!! کامپایلر اینو چه طور تفسیر میکنه؟

    تو این آرایه شما فرض کنین آرایه شما از آدرس 0x003bf824 شروع میشه . یعنی آدرس خونه [0][0] آرایه تو حافظه 0x003bf824 هستش . بعدش آدرسها به این صورت هستن :
    e
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا آدرس خونه [0][1] تو آدرس 0x003bf82E هست . و اندیس [0][1] معادل [10][0] هست .
    چرا ؟
    چون محل آدرس خونه [i][j] به این صورت بدست میاد :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که این A باید با آدرس شروع آرایه جمع زده بشه . که این مقدار با [10][0] فرقی نخواهد داشت .

  8. این کاربر از sin2x=2sinxcosx بخاطر این مطلب مفید تشکر کرده است


  9. #7
    اگه نباشه جاش خالی می مونه MosaferJade's Avatar
    تاريخ عضويت
    Feb 2011
    محل سكونت
    مگه فرق هم میکنه
    پست ها
    260

    پيش فرض

    سلام
    البته اینجا هنوزم خوبه اگه تو c دو تا آرایه پشت سر هم درست کنی مثل
    int a[10];
    int b[10];
    بعد یه حلقه به صورت زیر درست کنی
    for(int i=0;i<20;i++)
    a[i]=i;
    اون موقع هم من دیدم ارور نمیده استادمون میگفت که حلقه بالا اینجوری میشه
    int *p=a;
    for(int i=0;i<20;i++,p++)
    *p=i;
    از اونجاییکه p بعد از 10مرحله تکرار به آرایه دوم می رسد حلقه اولی نیز در باطن
    مثل حلقه دوم عمل می کند
    مرسی

Thread Information

Users Browsing this Thread

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

User Tag List

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

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