اطلاعیه

Collapse
No announcement yet.

سوال برنامه نویسی | تبدیل نوع متغییر اشاره گر

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال برنامه نویسی | تبدیل نوع متغییر اشاره گر

    سلام
    کد زیر رو از یه کتابخونه ای برداشتم
    [code=c]
    uint8_t RF24::write_payload(const void* buf, uint8_t data_len, const uint8_t writeType)
    {
    const uint8_t* current = reinterpret_cast<const uint8_t*>(buf);
    [/code]

    که تا جایی که فهمیدم طرف اومده آدرس دریافتی که تو اشاره گر buf ذخیره شده رو ، اومده نوع متغییر اشاره گر رو به کمک reinterpret_cast به صورت Char تعریف کرده، حالا سوالم اینه که چرا به صورت زیر ننوشته(چرا تو همون تابع، نوع buf رو char انتخاب نکرد و نوشته void) که دیگه هم کد کمتری مصرف میشه و هم دیگه نمیخواد آشاره گر current رو تعریف کنیم
    [code=c]
    uint8_t RF24::write_payload(const uint8_t* buf, uint8_t data_len, const uint8_t writeType)
    {
    [/code]
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

    #2
    پاسخ : سوال برنامه نویسی | تبدیل نوع متغییر اشاره گر

    اشاره گر void انتقال دهنده داده ی عمومی هستش. باهاش میشه همه ی نوع های داده ای دیگه رو انتقال داد و در مقصد بازیافت کرد. oo: oo:
    If the wind will not serve, take to the oars

    دیدگاه


      #3
      پاسخ : سوال برنامه نویسی | تبدیل نوع متغییر اشاره گر

      ممنون از شما
      میشه در مورد "بازیافت کرد" توضیح بدید
      ===============
      خب نمیشد همین تبدیل Buf دریافتی رو تو همون پارامتر تابع به char تبدیل کرد و الکی این کار زیر رو نکنیم :
      بیایم تو یه متغییر عمومی void بریزیم و بعد دوباره بیایم Char اش کنیم و در یه متغییر جدید ذخیرش کنیم
      مزیت این روش چیه؟ که طرف حاظر شده کدش بیشتر بشه و پیچیده تر ولی از این روش استفاده کنه و نه روش ساده ای که من!!!! گفتم؟
      اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

      اگه دوس دارید سریع به جواب برسید :
      1) قبل از پرسیدن سوال، بسرچید.
      2) سوالاتون رو با جزئیات کامل مطرح کنید.

      دیدگاه


        #4
        پاسخ : سوال برنامه نویسی | تبدیل نوع متغییر اشاره گر

        نوشته اصلی توسط md3848
        ممنون از شما
        میشه در مورد "بازیافت کرد" توضیح بدید
        ===============
        خب نمیشد همین تبدیل Buf دریافتی رو تو همون پارامتر تابع به char تبدیل کرد و الکی این کار زیر رو نکنیم :
        بیایم تو یه متغییر عمومی void بریزیم و بعد دوباره بیایم Char اش کنیم و در یه متغییر جدید ذخیرش کنیم
        مزیت این روش چیه؟ که طرف حاظر شده کدش بیشتر بشه و پیچیده تر ولی از این روش استفاده کنه و نه روش ساده ای که من!!!! گفتم؟
        اشاره گر void میتونه بقیه نوع های داده ای رو درون خودش جا بده
        مثلا یک اشاره گر int نمی تونه به داده ای از نوع float وصل بشه (نسبت داده بشه)
        ولی اشاره گر * void رو میشه به همه ی نوع های داده ای دیگه نسبت داد. oo: oo:
        مثلا میشه یبار اونو به int وصل کرد و کمی بعد به مثلا float منصوب کرد :eek: :eek:
        ----------------------------------------------------------------------------------------------------------
        من درباره ی اون تابع چیزی نمی دونم
        شاید یک تابع عمومی هستش که همه ی نوع های داده ای رو قبول میکنه
        اینکه چرا بعدا به char تبدیل کرده شاید می خواد اونو درون یک فایل ذخیره کنه.
        شاید هم تابعیه که می خواد داده ای ارسال کنه
        برای هر یک از این کارها باید یک stream از نوع داده ی پایه (char یا byte {داده ی قالب} ) داشته باشیم.
        If the wind will not serve, take to the oars

        دیدگاه

        لطفا صبر کنید...
        X