نمایش نتایج 1 تا 8 از 8

نام تاپیک: مشکل با ارایه ها؟؟؟

  1. #1

    مشکل با ارایه ها؟؟؟

    سلام دوستان عزیز کسی میتونه این کد رو توضیح بده گیج شدما خداییش
    #include 
    using namespace std;

    void increase (void* data, int psize)
    {
    if ( psize == sizeof(char) )
    { char* pchar; pchar=(char*)data; ++(*pchar); }
    else if (psize == sizeof(int) )
    { int* pint; pint=(int*)data; ++(*pint); }
    }

    int main ()
    {
    char a = 'x';
    int b = 1602;
    increase (&a,sizeof(a));
    increase (&b,sizeof(b));
    cout << a << ", " << b << endl;
    return 0;
    }

  2. #2

    نقل قول: مشکل با ارایه ها؟؟؟

    #include
    using namespace std;
    این نوع کد رو در کامپایلرdevاستفاده میکنند
    اما#includeچی چیزی رو فراخوانی نکرده

    void increase (void* data, int psize)
    {
    if ( psize == sizeof(char) )
    { char* pchar; pchar=(char*)data; ++(*pchar); }
    else if (psize == sizeof(int) )
    { int* pint; pint=(int*)data; ++(*pint); }
    }
    یه تایع که خروجیش مستقیم نیست(برای خروجی از اشاره گراستفاده میکنه)

    int main ()
    {
    char a = 'x';
    int b = 1602;
    increase (&a,sizeof(a));
    increase (&b,sizeof(b));
    cout << a << ", " << b << endl;
    return 0;
    }
    اینم که تابع main و از تابع بالا برای براورد شرط برنامه درش استفاده شده
    Everything that has a beginning has an end. ... The End?



  3. #3

    نقل قول: مشکل با ارایه ها؟؟؟

    سلام دوست عزیز ، تابع increase آدرس یه داده (data) رو به همراه تعداد بایت های این داده رو میگیره . خب همونطور که میبینی معلوم نیست نوع داده چیه (void) هست به خاطر همین نمیتونیم مستقیم ++ش کنیم و مقدارش رو افزایش بدیم . واسه همین میاییم اول اندازه ی داده رو با اندازه ای که یه کاراکتر میگیره (sizeof(char مقایسه میکنیم که اگه برابر بودن معلوم میشه داده ی ما کاراکتر هست . بعد یه اشاره گر (pointer) به یه کاراکتر میسازیم و آدرس data رو میریزیم توش و افزایشش میدیم به این صورت مقداری که data داره بهش اشاره میکنه یه واحد افزایش پیدا میکنه تو مثال تو x میشه y . اگه هم که شرط برقرار نبود و اندازه ی داده برابر با اندازه ی یه integer بود میاییم یه pointer به یه integer میسازیم و آدرس data رو میریزم توش و ++ش می کنیم که در واقع مقداری که Data داره بهش اشاره میکنه افزایش پیدا میکنه که در مثال تو 1602 میشه 1603 .

    موفق و پیروز باشی

  4. #4

    نقل قول: مشکل با ارایه ها؟؟؟

    من موندم چرا اینو اینجوری فرستاده
     increase (&a,sizeof(a));
    increase (&b,sizeof(b));

    اینجوری مگه نمیشه

    increase (sizeof(a),sizeof(b)); 


    وقتی که void هم باشه این مگه لازمه؟

    &a

  5. #5

    نقل قول: مشکل با ارایه ها؟؟؟

    دوست عزیز void *data یعنی یه اشاره گر به هر چیزی که عشقت میکشه شده کاراکتر باشه شده عدد باشه شده عکس و فیلم (البته مجاز) باشه . و وقتی میگی a& یعنی اینکه آدرس a رو بریز توی data همین تا data به a اشاره کنه (ولی باز میگم معلوم نیست data چی هست ما فقط آدرسشو میخواییم و اندازه ی Data رو هم که جدا میفرستیم بالا .( sizeof(a هم یعنی اندازه ی a که اگه کاراکتر باشه 1 هست و اگه int باشه 4 و اگه double باشه 8 و ادامه ی داستان . پس ((increase(&a,sizeof(a یعنی اینکه آدرس a بره تو data و اندازه ی a بره تو psize . البته یه نکته ای که باید تو پست بالا اشاره میکردم اینه که ما آدرس data رو نمیریزیم توی یه اشاره گر از نوع کاراکتر یا int بلکه آدرسی که داخل data هست رو به نوع مورد نظر توسط دستورات (*char) و یا دستور (*int) کست (cast) میکنیم .

    موفق و پیروز باشی

  6. #6

    نقل قول: مشکل با ارایه ها؟؟؟

    دوست عزیز تا جای که من متوجه شدم شما مشکلت با اشاره گره بود نه آرایه ها کمی در باره اشاره گرها تحقیق کن
    امید وارم موفق باشی
    Everything that has a beginning has an end. ... The End?



  7. #7

    نقل قول: مشکل با ارایه ها؟؟؟

    باور کنید اینارو بلدما قاطی میکنم :دی
    همین قسمت رو قاطی میکنم؟؟اشــــــــــــــــ ـــــــــــاره گرها تاحالا 4 تا رفرنس رو خوندم باز هم یکم قاطی پاتی میشه
    بازم مرسی

    مقسمی،قمی ،تاتوریال اووووووووه زیادن ولییکم درهم میشه

  8. #8

    نقل قول: مشکل با ارایه ها؟؟؟

    نقل قول نوشته شده توسط boysilent مشاهده تاپیک
    باور کنید اینارو بلدما قاطی میکنم :دی
    همین قسمت رو قاطی میکنم؟؟اشــــــــــــــــ ـــــــــــاره گرها تاحالا 4 تا رفرنس رو خوندم باز هم یکم قاطی پاتی میشه
    بازم مرسی

    مقسمی،قمی ،تاتوریال اووووووووه زیادن ولییکم درهم میشه
    یه سری به اینجـــــــــــــــــا بزن جالب توضیح داده با مثال
    Everything that has a beginning has an end. ... The End?



قوانین ایجاد تاپیک در تالار

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