PDA

View Full Version : تفاوت مرجع به اشاره گر با اشاره گر به اشاره گر



mehdi_vatan
جمعه 28 خرداد 1389, 20:34 عصر
منظور از مرجع به اشاره گر چیه و تفاوتش با اشاره گر به اشاره گر چیست؟
لطفا اگر در این باره اطلا عاتی دارید همراه یک مثال من را راهنمایی کنید .ممنون.

saber187518
شنبه 29 خرداد 1389, 00:23 صبح
با سلام
دوست عزیز حداقل من یکی که در مورد مرجع به اشاره گر چیزی نشنیدم.
البته ممکنه که من بلد نباشم.
ولی یک لطف کن و در مورد سوالت کمی بیشتر توضیح بده که شاید منظور شما چیز دیگه ای هست و ما متوجه نشدیم و البته باز هم تاکید میکنم که شاید من نمیدونم.
و در مورد اشاره گر به اشاره گر.
شما میتوانید یک متغیر با نام x را مثلا از نوع int داشته باشید و برای کار کردن با ان یک متغیر از نوع اشاره گر به آن تعریف کنید با نام p که آدرس متغیر x در درون متغیر p ذخیره میشود و اگر یک متغیر را تعریف کنید که آدرس یک اشاره گر را بتواند ذخیره کند در واقع شما یک اشاره گر به اشاره گر تعریف کرده اید.
که هنگامی که بخواهید به طور غیر مستقیم بر رو ی حافظه کار کنید کاربرد خواهد داشت.
یاعلی...

Salar Ashgi
پنج شنبه 03 تیر 1389, 19:13 عصر
یک مثال ساده و جامع از همه نوع اشاره گر ، اشاره گر مرجع ، اشاره گر معمولی ، اشاره گر به اشاره گر و ...



#include <iostream>
#include <conio>
int main(){
int a=4;
int &b = a;
a*=2;
cout<<b<<endl;// b = 8
//====================
int *p = &a; //pointer to a
int **p2 = &p;//pointer to pointer

cout<<a<<endl;
cout<<&a<<endl;
cout<<p<<endl;
cout<<p2<<endl;
cout<<&p<<endl;

getch();
}


موفق باشید .

moslem.hady
پنج شنبه 28 مرداد 1389, 10:24 صبح
س. دوست عزیز من جایی خوندم که نمیشه یک مرجع به اشاره گر تعریف کرد!! دلیلش یادم نیست!

MaHyaR.DrAcOulA
پنج شنبه 28 مرداد 1389, 10:59 صبح
سلام سالار جان
من از ویژوال سی ++ استفاده میکنم وقتی کد شما رو توی برنامه ریختم تا اجراش کنم 1 خطا داد
که مال :

#include <conio>
اینم پیغام خطا هست :
fatal error C1083: Cannot open include file: 'conio': No such file or directory
بعدش اینو به :

#include <conio.h>
تغییر دادم ولی تعداد خطاهاش بیشتر شده
میخواستم ببینم مشکل از کجاست؟یعنی ویژوال این دستورات رو نمیشناسه؟

PC2st
پنج شنبه 28 مرداد 1389, 15:20 عصر
اشاره‌گر: برای دسترسی به آدرس یک متغیر استفاده می‌شود.


int i = 0;
int* x = &i;آدرس متغیر i در مقدار متغیر x ذخیره می‌شود، پس x به i اشاره می‌کند.

مرجع: یک نام مستعار برای دسترسی به خود متغیر است (نحوهٔ پیاده‌سازی آن توسط کامپایلر با کمک اشاره‌گر است).


int i = 0;
int& x = i;متغیر x مرجعی برای دسترسی به متغیر i است، متغیر x را می‌توان همان متغیر i دانست، آدرس متغیر x همان آدرس متغیر i است.

اشاره‌گر به اشاره‌گر: متغیری است که آدرس یک اشاره‌گر را در خود نگهداری می‌کند.


int i = 0;
int* x = &i;
int** m = &x;متغیر m آدرس متغیر x را در خود نگهداری می‌کند، پس آدرس متغیر m با آدرس متغیر x متفاوت است.

مرجع به اشاره‌گر: یک نام مستعار برای دسترسی به یک اشاره‌گر است.


int i = 0;
int* x = &i;
int*& m = x;آدرس متغیر m همان آدرس متغیر x است، می‌توان m را یک نام مستعار برای x در نظر گرفت.

تفاوت اشاره‌گر با مرجع: مراجع نمی‌توانند مقدار NULL بگیرند، مراجع نمی‌توانند تغییر ارجاع دهند، آدرس مراجع همان آدرس متغیری است که به آن ارجاع می‌کنند: