ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 4 از 4

موضوع: Pointers to pointers

  1. #1
    2009/06/06
    شيراز
    357
    87

    Pointers to pointers

    سلام دوستان من دوتا کد دارم که توي هيچ چيزي (هيچ مغازه عطاري) :eek: نديدم اما الان کارم باهشون گيره ولي نميدونم دقيقا چي کار ميکنن و چجوري عمل ميکنن .ممنون ميشم اگر ميدونيد راهنمايي کنيد
    1-
    کد:
    ROM **rom = (ROM **)(0x1fff1ff8 + 2 * sizeof(ROM **));
    2-
    کد:
    const CAN_ODCONSTENTRY myConstOD [] = {
    // index subindex length value
    { 0x1000, 0x00, 4, 0x54534554UL }, // "TEST"
    { 0x1018, 0x00, 1, 0x00000003UL },
    { 0x1018, 0x01, 4, 0x00000003UL },
    { 0x2000, 0x00, 1, (uint32_t)'M' },
    };
    
    يا مثلا
    
    #define CAN_MSGOBJ_DAT 0x00000000UL // data frame

    اين UL قضيش چيه و اصلا چجوري ممکنه تويه يه مقدار هگز ما همچين چيزيرو بديم.
    سوال اول هم بسيار شبيه Pointers to pointers اما خيلي پيچيده تره

    توضيح نحوه عملکرد همچين کدايي برام بيشتر مهمه تا صرفا توضيح خود همين کد ممنون از همگي

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  2. #2
    2009/10/21
    تهران
    2,503
    207

    پاسخ : Pointers to pointers

    UL که به کامپایلر میفهمونه عدد جلوشو بصورت unsigned long در نظر بگیره .
    در مورد اون اشاره گر به اشاره گر هم خب همچین چیزی تو سی هست. کاش کد رو با تگ چپ چین کردن درست وارد میکردی تا بشه اونو خوند بعد نظر داد

    ROM **rom = (ROM **)(0x1fff1ff8 + 2 * sizeof(ROM **));
  3. #3
    2009/10/21
    تهران
    2,503
    207

    پاسخ : Pointers to pointers

    خب حالا شد
    اندازه همون اشاره گر به اشاره گر (که در اصل یه اشاره گرهو تفاوتش با اشاره گرهای دیگه اینه که اینجا به یه متغیر اشاره نمیشه بلکه به یه آدرس دیگه اشاره شده oo: )
    با عملگر sizeof تعداد بایتهای این اشره گر رو (که احتمالا 4 تاست) رو ضربدر دو میکنه (اینقدر فضا لازم داره) بعد با یک عدد جمع میکنه تا آدرس درست بدست بیاد!!!
    خلاصش اینکه داخل این اشاره گر آدرس یه مکانی که از 0x1fff1ff8 به اندازه دو برابر تعداد بایتهایی که این اشاره گر برای ذخیره آدرس لازم داره رو تو خودش ذخیره کرده
    با فرض اینکه اشاره گر 4 بایتی باشه آدرس ذخیره شده میشه 0x1fff1fff
  4. #4
    2009/01/28
    Th
    438
    1

    پاسخ : Pointers to pointers

    اگه برنامه ماله میکروه که 0x1fff1ff8 احتمالا آدرس ابتدای فضای sram هست. فک کنم میکروتون 512kB حافظه ی فلش داره . تو نسلای جدید مثل arm آدرس flash و sram و رجیسترا و ... دنبال هم میان .

    اون * 2 هم احتمالا برا اینه که دیتا مثلا برا میکرو 32 بیتی ذخیره میشه ولی دیتای شما 64 بیتیه( long)
    پشت به کنکور ، رو به سربازی...
نمایش نتایج: از 1 به 4 از 4

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •