منظور از مرجع به اشاره گر چیه و تفاوتش با اشاره گر به اشاره گر چیست؟
لطفا اگر در این باره اطلا عاتی دارید همراه یک مثال من را راهنمایی کنید .ممنون.
منظور از مرجع به اشاره گر چیه و تفاوتش با اشاره گر به اشاره گر چیست؟
لطفا اگر در این باره اطلا عاتی دارید همراه یک مثال من را راهنمایی کنید .ممنون.
با سلام
دوست عزیز حداقل من یکی که در مورد مرجع به اشاره گر چیزی نشنیدم.
البته ممکنه که من بلد نباشم.
ولی یک لطف کن و در مورد سوالت کمی بیشتر توضیح بده که شاید منظور شما چیز دیگه ای هست و ما متوجه نشدیم و البته باز هم تاکید میکنم که شاید من نمیدونم.
و در مورد اشاره گر به اشاره گر.
شما میتوانید یک متغیر با نام x را مثلا از نوع int داشته باشید و برای کار کردن با ان یک متغیر از نوع اشاره گر به آن تعریف کنید با نام p که آدرس متغیر x در درون متغیر p ذخیره میشود و اگر یک متغیر را تعریف کنید که آدرس یک اشاره گر را بتواند ذخیره کند در واقع شما یک اشاره گر به اشاره گر تعریف کرده اید.
که هنگامی که بخواهید به طور غیر مستقیم بر رو ی حافظه کار کنید کاربرد خواهد داشت.
یاعلی...
یک مثال ساده و جامع از همه نوع اشاره گر ، اشاره گر مرجع ، اشاره گر معمولی ، اشاره گر به اشاره گر و ...
#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();
}
موفق باشید .
س. دوست عزیز من جایی خوندم که نمیشه یک مرجع به اشاره گر تعریف کرد!! دلیلش یادم نیست!
سلام سالار جان
من از ویژوال سی ++ استفاده میکنم وقتی کد شما رو توی برنامه ریختم تا اجراش کنم 1 خطا داد
که مال :
#include <conio>اینم پیغام خطا هست :
fatal error C1083: Cannot open include file: 'conio': No such file or directory
بعدش اینو به :
#include <conio.h>تغییر دادم ولی تعداد خطاهاش بیشتر شده
میخواستم ببینم مشکل از کجاست؟یعنی ویژوال این دستورات رو نمیشناسه؟
اشارهگر: برای دسترسی به آدرس یک متغیر استفاده میشود.
int i = 0;آدرس متغیر i در مقدار متغیر x ذخیره میشود، پس x به i اشاره میکند.
int* x = &i;
مرجع: یک نام مستعار برای دسترسی به خود متغیر است (نحوهٔ پیادهسازی آن توسط کامپایلر با کمک اشارهگر است).
int i = 0;متغیر x مرجعی برای دسترسی به متغیر i است، متغیر x را میتوان همان متغیر i دانست، آدرس متغیر x همان آدرس متغیر i است.
int& x = i;
اشارهگر به اشارهگر: متغیری است که آدرس یک اشارهگر را در خود نگهداری میکند.
int i = 0;متغیر m آدرس متغیر x را در خود نگهداری میکند، پس آدرس متغیر m با آدرس متغیر x متفاوت است.
int* x = &i;
int** m = &x;
مرجع به اشارهگر: یک نام مستعار برای دسترسی به یک اشارهگر است.
int i = 0;آدرس متغیر m همان آدرس متغیر x است، میتوان m را یک نام مستعار برای x در نظر گرفت.
int* x = &i;
int*& m = x;
تفاوت اشارهگر با مرجع: مراجع نمیتوانند مقدار NULL بگیرند، مراجع نمیتوانند تغییر ارجاع دهند، آدرس مراجع همان آدرس متغیری است که به آن ارجاع میکنند: