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

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

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;
 

Arash_j13

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

کد:
f(int**p)
{
     *p=0;
}

or

int f2(int *&p)
{
    p=0;
{
 

sasan_66

کاربر تازه وارد
تاریخ عضویت
18 جولای 2006
نوشته‌ها
450
لایک‌ها
0
ممنون آقا آرش
 
بالا