آژانس هواپیمایی
tanki

سوالي از اشاره گر ها

شروع موضوع توسط sasan_66 ‏23 ژوئن 2007 در انجمن خانواده C++ , C

  1. sasan_66

    sasan_66 کاربر تازه وارد

    تاریخ عضویت:
    ‏18 جولای 2006
    نوشته ها:
    450
    تشکر شده:
    0
    چرا تغييراتي كه روي d داخل تابع f شده تاثيري روي d بيروني نميذاره؟
    خب مگه جفتشون اشاره گر نيستن؟
    چرا مثل فرستادن متغير با مقدار عمل مي كنه؟
    کد:
    void f( int *d )
    {
    	cout << "1" << d <<endl;
    	d = 0;
    	cout << "2" << d <<endl;
    }
    کد:
    int *d;
    	cout << "3" << d <<endl;
    	f( d );
    	cout << "4" << d <<endl;
     
  2. Arash_j13

    Arash_j13 Registered User

    تاریخ عضویت:
    ‏18 فوریه 2005
    نوشته ها:
    778
    تشکر شده:
    2
    محل سکونت:
    مشهد
    چون اشاره گر ها هم مثل همه متغییر ها با مقدار ارسال می شن شما یه موردی احتمالا درست متوجه نشید باشاره گر ها می شه ارسال با مرجع رو شبیه سازی کرد ولی خب شما یه چیز دیگه می خواید
    مقدار خود اشاره گرچیه؟ مگه نه اینکه یه آدرس هست و اشار گر ها با مقدار ارسال می شه یعنی شما هر تغییر تو مقدار اشاره گر که همون آدرس هست بیید تو متغییر اصلی تاثیر نزاشتید ولی بنا به نوع خاص اشاره گر شما می تونید فقط داده ای که اشاره گر بهش اشاره می کنه (تاکید می کنم داده ای که اشاره گر بهش اشاره می کنه) نه خود اشاره گر و عوض کنید برای عوض کردن خود اشاره گر باید اشاره گر به اشاره گر یا رفرنس به اشاره گر بفرستید

    کد:
    f(int**p)
    {
         *p=0;
    }
    
    or
    
    int f2(int *&p)
    {
        p=0;
    {
    
    
     
  3. sasan_66

    sasan_66 کاربر تازه وارد

    تاریخ عضویت:
    ‏18 جولای 2006
    نوشته ها:
    450
    تشکر شده:
    0
    ممنون آقا آرش
     
avanak همکاری در فروش عسل طبیعی و گرده گل ایرانی