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





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









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









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





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

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

موضوع: اشاره گر ها

  1. #1
    2012/06/02
    1,305
    18
    IRT

    اشاره گر ها

    سلام دوستان،
    من شنيدم كه براي نوشتن در حافظه در زبان سي ميشه از اشاره گر استفاده كرد.
    فرض كنيد من ميخوام تو آدرس 0x1000 از رم مقدار 0x12FF رو بنويسم. بايد چي كار كنم؟
    بايد از malloc هم استفاده كنم؟ چطوري؟
  2. #2
    2005/12/24
    89
    75

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط plasma
    سلام دوستان،
    من شنيدم كه براي نوشتن در حافظه در زبان سي ميشه از اشاره گر استفاده كرد.
    فرض كنيد من ميخوام تو آدرس 0x1000 از رم مقدار 0x12FF رو بنويسم. بايد چي كار كنم؟
    بايد از malloc هم استفاده كنم؟ چطوري؟
    سلام
    کد برنامه شما این میشه
    کد:
    unsigned int * my_pointer;
    my_pointer=0x1000;
    *my_pointer =0x12FF;
    یا بطور ساده تر
    کد:
    *(unsigned int *)(0x1000)=0x12FF;
    * عملگر اشاره گر است.
  3. #3
    2018/07/10
    155
    42

    پاسخ : اشاره گر ها

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

    خیلی ممنون از کمکتون.
  4. #4
    2017/06/13
    1,063
    531

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط saati.sms

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

    عضویت

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

    خیلی ممنون از کمکتون.
    سلام
    به این کار Type casting میگن. با این کار به کامپایلر میفهمونید با array به عنوان اشاره گر به نوع int رفتار کنه.
    بودنش توی این کد خاص بی تاثیره و میشه حذفش کرد!
  5. #5
    2018/07/10
    155
    42

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط hossein.m98

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

    عضویت

    سلام
    به این کار Type casting میگن. با این کار به کامپایلر میفهمونید با array به عنوان اشاره گر به نوع int رفتار کنه.
    بودنش توی این کد خاص بی تاثیره و میشه حذفش کرد!
    پس چرا توی شکل زیر خروجی اشتباه میشه ؟
  6. #6
    2017/06/13
    1,063
    531

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط saati.sms

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

    عضویت

    پس چرا توی شکل زیر خروجی اشتباه میشه ؟
    خوب این کد، کد قبلی نیست! دقت کنید هر int بسته به کامپایلر میتونه 2 یا 4 بایت طول داشته باشه. وقتی شما آدرس یک آرایه char که 1 بایته به پوینتر int میدید، اون به اندازه 2 یا 4 خونه از آرایه میخونه و فکر میکنه همه این 2 یا 4 بایت مربوط به یک متغیره. توی کد قبلی آرایه هم از نوع int بود که گفتم تایپ کستینگ در موردش بی تاثریه. اما اینجا قضیه فرق داره.
  7. #7
    2018/07/10
    155
    42

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط hossein.m98

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

    عضویت

    خوب این کد، کد قبلی نیست! دقت کنید هر int بسته به کامپایلر میتونه 2 یا 4 بایت طول داشته باشه. وقتی شما آدرس یک آرایه char که 1 بایته به پوینتر int میدید، اون به اندازه 2 یا 4 خونه از آرایه میخونه و فکر میکنه همه این 2 یا 4 بایت مربوط به یک متغیره. توی کد قبلی آرایه هم از نوع int بود که گفتم تایپ کستینگ در موردش بی تاثریه. اما اینجا قضیه فرق داره.
    میشه این حالت دومی رو توضیح بدید .
    پس اینجوری تایپ کستینگ به چه دردی میخوره اگر قراره اشتباه بشه ؟
  8. #8
    2017/06/13
    1,063
    531

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط saati.sms

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

    عضویت

    میشه این حالت دومی رو توضیح بدید .
    پس اینجوری تایپ کستینگ به چه دردی میخوره اگر قراره اشتباه بشه ؟
    هر چیزی به جای خودش و درست اگر به کار بره، دارای خاصیته!
    ببینید شما فرض بگیرید که یک تابع 2 تا پارامتر ورودی داره که پارامتر اول، نوع پارامتر دوم رو مشخص میکنه. خوب میدونید توی زبان C نمیشه یک تابع چند نوع پروتوتایپ داشته باشه و ما میخواییم این کار حتما انجام بشه! راه حل استفاده از اشاره گر هستش. میاییم نوع پارامتر دوم رو از نوع اشاره گر به void قرار میدیم. به این صورت میشه آدرس هر نوع داده ای رو به تابع ارسال کرد.
    داخل بدنه تابع فرضا تشخیص دادیم که نوع پارامتر دوم چیه و به چه نوع داده ای داره اشاره میکنه. حالا باید چه کاری انجام بدیم که بتونیم از داده امون استفاده کنیم؟ باید آدرسی که داریم به پورینتری از نوع همون داده بدیم و در این کار از تایپ کستینگ استفاده میکنیم. به شکل زیر:
    کد:
    #define ParamTypeInt    0
    #define ParamTypeFloat    1
    void f(int paramType, void *param)
    {
        if(paramType == ParamTypeInt)
        {
            int *paramInt = (int *) param;
            printf("param = %d", *paramInt);
        }
        else if(paramType == ParamTypeFloat)
        {
            float *paramFloat = (float *) param;
            printf("param = %f", *paramFloat);
        }
    }
  9. #9
    2018/07/10
    155
    42

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط hossein.m98

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

    عضویت

    هر چیزی به جای خودش و درست اگر به کار بره، دارای خاصیته!
    ببینید شما فرض بگیرید که یک تابع 2 تا پارامتر ورودی داره که پارامتر اول، نوع پارامتر دوم رو مشخص میکنه. خوب میدونید توی زبان C نمیشه یک تابع چند نوع پروتوتایپ داشته باشه و ما میخواییم این کار حتما انجام بشه! راه حل استفاده از اشاره گر هستش. میاییم نوع پارامتر دوم رو از نوع اشاره گر به void قرار میدیم. به این صورت میشه آدرس هر نوع داده ای رو به تابع ارسال کرد.
    داخل بدنه تابع فرضا تشخیص دادیم که نوع پارامتر دوم چیه و به چه نوع داده ای داره اشاره میکنه. حالا باید چه کاری انجام بدیم که بتونیم از داده امون استفاده کنیم؟ باید آدرسی که داریم به پورینتری از نوع همون داده بدیم و در این کار از تایپ کستینگ استفاده میکنیم. به شکل زیر:
    کد:
    #define ParamTypeInt    0
    #define ParamTypeFloat    1
    void f(int paramType, void *param)
    {
        if(paramType == ParamTypeInt)
        {
            int *paramInt = (int *) param;
            printf("param = %d", *paramInt);
        }
        else if(paramType == ParamTypeFloat)
        {
            float *paramFloat = (float *) param;
            printf("param = %f", *paramFloat);
        }
    }
    ممنون بابت پاسختون.
    الان در تصویر زیر من یک ارایه int تعریف کردم و سپس میخوام نوع اشاره گر اون رو به char تغییر بدم. با اینکه پوینتر p2array یک کاراکتر هست ، طول ان 4 بایت میباشد که یعنی تایپ کستینگ انجام نمیشه . مشکل کجاست.( مثال قبلی رو هم متوجه شدم. ممنون. )
  10. #10
    2017/06/13
    1,063
    531

    پاسخ : اشاره گر ها

    نقل قول نوشته اصلی توسط saati.sms

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

    عضویت

    ممنون بابت پاسختون.
    الان در تصویر زیر من یک ارایه int تعریف کردم و سپس میخوام نوع اشاره گر اون رو به char تغییر بدم. با اینکه پوینتر p2array یک کاراکتر هست ، طول ان 4 بایت میباشد که یعنی تایپ کستینگ انجام نمیشه . مشکل کجاست.( مثال قبلی رو هم متوجه شدم. ممنون. )
    طول آدرس همیشه ثابته و ربطی به نوع داده نداره.
نمایش نتایج: از 1 به 10 از 10

موضوعات مشابه

  1. پاسخ: 2
    آخرين نوشته: 2016/03/13, 13:49
  2. چرا اشاره گر ؟
    توسط alizamany74 در انجمن C , C++ , C#
    پاسخ: 14
    آخرين نوشته: 2015/05/08, 12:04
  3. اشاره گر ->
    توسط FRA در انجمن ATMEL
    پاسخ: 3
    آخرين نوشته: 2015/04/13, 02:11
  4. اشاره گر
    توسط saeed mns در انجمن میکروکنترلرهای PIC
    پاسخ: 3
    آخرين نوشته: 2013/07/11, 16:29
  5. اشاره گرها
    توسط رضا حاجي زاده در انجمن C , C++ , C#
    پاسخ: 3
    آخرين نوشته: 2007/11/09, 18:22

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

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

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

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

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