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

نام تاپیک: اشاره گر ها

  1. #1
    کاربر دائمی آواتار raminlich
    تاریخ عضویت
    اسفند 1392
    محل زندگی
    خوزستان
    پست
    164

    Angry اشاره گر ها

    سلام این اشاره گر ها چیه مزیتشون
    یه سری سورس ازتو http://www.cplusplus.com دیدم
    ولا کار مثبت این شاره گر هار نفهمیدم اگه میشه اینارو توضیح بدین لطفا
    #include <iostream>
    using namespace std;

    int main ()
    {
    int firstvalue, secondvalue;
    int * mypointer;

    mypointer = &firstvalue;
    *mypointer = 10;
    mypointer = &secondvalue;
    *mypointer = 20;
    cout << "firstvalue is " << firstvalue << '\n';
    cout << "secondvalue is " << secondvalue << '\n';
    return 0;
    }

    اگه می شه یه مثال با توضیح بزنید یه کار مثبتی هم انجام بدن تو برنامه

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: اشاره گر ها

    اشاره گر ها خیلی مفیدن. اصولا تو برنامه نویسی شی گرا به صورت وسیع از اشاره گر ها استفاده میشه.

    حالا اینجا چون متغیر int هست و primitive type هستند، زیاد خاصیتش رو درک نمیکنی.
    ولی بذار اینجوری بگم، شما یک شی دارید و یک اشاره گر. شی بخشی از حافظه رو میگیره، و اشاره گر به اون بخش از حافظه اشاره میکنه و در هر موقعیتی این قابلیت رو داره که اشاره گر به شی دیگری از اون نوع اشاره کنه.
    مثلا من میگم 10 تا بادکنک داریم. یک اشاره گر داریم که هر بار به یک بادکنک اشاره میکنه. خب برای اینکه هر ده بادکنک رو بترکونم، میام اون اشاره گر ( مثل هدف ) روی اون بادکنک قرار میدم و میگم مثلا target->shot() . خب اینو یه بار مینویسی، حالا بستگی داره اون target به کدوم از این اشیا ( بادکنک ) اشاره کنه، اونو نابود میکنه. این مفهومش بود.

    در مورد int ,... اگر همینجوری مقدارش رو عوض کنی، واقعا مقدار اون عدد تو حافظه عوض میشه. ولی اگر اشاره گرش رو عوض کنی، اونوقت اون عدد در حافظه میمونه، فقط این متغیر میره سراغ یه جای دیگه تو حافظه و اونوقت میتونی اون مقدار جدیدی که تو حافظه است رو تغییر بدی ( دیگه دسترسی به عدد قبلی قطع شده )

  3. #3
    کاربر دائمی آواتار raminlich
    تاریخ عضویت
    اسفند 1392
    محل زندگی
    خوزستان
    پست
    164

    نقل قول: اشاره گر ها

    سلام به همه
    میشه لطف کنین این برنامه رو برام توضیح بدین؟نمی دونم چرا این شاره گر هارو نمی فهمم
    #include <iostream>
    using namespace std;

    int main ()
    {
    int numbers[5];
    int * p;
    p = numbers; *p = 10;
    p++; *p = 20;
    p = &numbers[2]; *p = 30;
    p = numbers + 3; *p = 40;
    p = numbers; *(p+4) = 50;
    for (int n=0; n<5; n++)
    cout << numbers[n] << ", ";
    return 0;
    }

  4. #4

    نقل قول: اشاره گر ها

    آرایه ها در واقع همون اشاره گر هستند
    int numbers[5];
    numbers در واقع یک اشاره گر هست که داره به یک جای حافظه اشاره می کنه. همون جایی که اولین عنصر آرایه قرار گرفته

    int * p;
    ما یک اشاره گر به نام p تعریف می کنیم

    p = numbers;
    اشاره گر P را برابر numbers قرار می دهیم. یعنی p الان داره به اولین عنصر آرایه اشاره می کنه

    *p = 10;
    محتوای p را برابر 10 قرار می دهیم. چون p آدرس اولین عنصر آرایه بود بنابراین محتوای اولین عنصر آرایه برابر 10 میشه

    p++;
    یکی به اشاره گر اضافه می کنیم در اینجا یعنی اشاره گر به خانه دوم آرایه اشاره می کنه

    *p = 20;
    محتوای خانه دوم برابر 20 قرار می دهیم

    p = &numbers[2];
    آدرس خانه سوم آرایه را به دست میاریم و اون را به P اختصاص می دهیم یعنی حالا P به سومین خانه آرایه اشاره می کنه

    *p = 30;
    محتوای خانه سوم برابر 30 قرار می دهیم

    p = numbers + 3;
    numbers که آدرس اولین خونه حافظه بود را با 3 جمع می کنیم که آدرس خونه چهارم به دست میاد و P برابر آدرس خونه چهارم میشه

    *p = 40;
    خونه چهارم میشه 40

    p = numbers;
    دوباره P به اولین خونه آرایه اشاره می کنه

    *(p+4) = 50;
    محتوای خونه p+4 از حافظه برابر 50 میشه یعنی خونه پنجم

    حالا ماتریس را چاپ می کنیم

  5. #5
    کاربر دائمی آواتار (while(c=1) printf(cpp=0
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    جایی که تو نیستی
    پست
    100

    نقل قول: اشاره گر ها

    #include <iostream>
    using namespace std;

    int main ()
    {
    int numbers[5]; //متغیری از نوع آرایه ای با شِش خانه
    int * p;
    p = numbers; *p = 10; //صِفرمین خانه آرایه حاوی عدد دَه شد
    p++; *p = 20; //توسط پی پلاس پلاس، اشاره گر پی به خانه اولِ متغیر نامبرز رجوع و اشاره می کنه و عدد بیست در خانه اول جا میگیره
    p = &numbers[2]; *p = 30; //اشاره گر به خانه دوم متغیر نامبرز اشاره می کنه و عدد سی رو درون خانه دوم جا میده
    p = numbers + 3; *p = 40; //اشاره گر به خانه سوم متغیر نامبرز اشاره می کنه و عدد چهل رو درون خانه سوم جا میده
    p = numbers; *(p+4) = 50; //اشاره گر به خانه چهارم متغیر نامبرز اشاره می کنه و عدد پنجاه رو درون خانه چهارم جا میده

    for (int n=0; n<5; n++) //از خانه صفر تا خانه چهارم مقدار دهی شدن، اما خانه پنجم خالیه. بنابراین اگر
    //نوشته بشه اِن کوچکتر یا مساوی پنج، خانه پنجم چاپ میشه منتها چون که مقداری بهش
    //.اختصاص داده نشده، عدد صفر چاپ میشه

    cout << numbers[n] << ", "; //مقدار داخل خانه ها به ترتیب چاپ میشن
    return 0;
    }



    دقت کن که خانه سوم و چهارم شبیه به هم هستن. خانه سوم می تونست اینطوری نوشته بشه: p = &numbers[0] + 3
    خانه چهارم با این دستور مساویه : p = numbers + 4

    در خانه دوم، p داره مستقیما به خانه دوم متغیر numbers اشاره می کنه.
    خانه اول با این دستور مساویه: p = numbers + 1

    برنامه به خاطر جمع و جور شدن، دو دستوری کنار هم نوشته شده. مثلا این دو دستور رو که می بینی ;p = numbers; *p = 10 اولویت با سمت چپی هستش، و بعد نوبت به سمت راستی میرسه.
    در کُل فقط به نحوه پر شدن خانه های آرایه توجه کن. همین.
    خانه های آرایه از صفر شروع میشن -- بنابراین [5] در اصل 6 خانه هست که از صفرمین تا چهارمین خانه مقداردهی شدن (که میشه پنج خانه)، و در حلقه for هم گفته شده از صفرمین خانه تا چهارمین خانه. اگر در حلقه for نوشته شده بود n = 1 چی می شد؟ اونوقت نتیجه می شد : 50 40 30 20.
    با خانه پنجم کاری نداریم چون مقدار دهی نشده.
    خانه صفرم مثل طبقه هم کفِ ساختمان های شهر می مونه. ساختمانه 5 طبقه هست، ولی به علاوه طبقه هم کف میشه 6 طبقه. به همین دلیله که صفر، اولین خانه حساب میشه.

    موفق باشی.
    آخرین ویرایش به وسیله (while(c=1) printf(cpp=0 : چهارشنبه 07 خرداد 1393 در 21:25 عصر

  6. #6
    کاربر دائمی آواتار (while(c=1) printf(cpp=0
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    جایی که تو نیستی
    پست
    100

    نقل قول: اشاره گر ها

    rahnema1
    خانه پنجم اصلا مقدار دهی نشده.
    از صفر تا چهار مقدار دهی شده،; اما اگر به صورت تعدادی بخوایم حساب کنیم، میشه خانه پنجم.
    آخرین ویرایش به وسیله (while(c=1) printf(cpp=0 : چهارشنبه 07 خرداد 1393 در 21:19 عصر

تاپیک های مشابه

  1. استفاده از اشاره گرها در Object Pascal (دلفی)
    نوشته شده توسط RezaBS در بخش مقالات مرتبط با Delphi/Win32
    پاسخ: 2
    آخرین پست: چهارشنبه 03 تیر 1388, 19:37 عصر
  2. انتقال اشاره گر به پایان بلاک
    نوشته شده توسط mr_esmaily در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: سه شنبه 27 بهمن 1383, 03:49 صبح
  3. استفاده از ساختارها و اشاره گرها
    نوشته شده توسط سیدهانی در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 4
    آخرین پست: سه شنبه 06 مرداد 1383, 06:34 صبح
  4. فعال سازی دگمه های غیر فعال با اشاره ماوس
    نوشته شده توسط Developer Programmer در بخش برنامه نویسی در Delphi
    پاسخ: 14
    آخرین پست: یک شنبه 23 آذر 1382, 14:27 عصر
  5. اشاره گر mouse به شکل دست در VB
    نوشته شده توسط ghanbar1343M در بخش VB.NET
    پاسخ: 13
    آخرین پست: یک شنبه 11 آبان 1382, 09:40 صبح

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

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