View Full Version : Referencing و Dereferencing
C3phalex1n_0x
دوشنبه 30 تیر 1393, 22:55 عصر
سلام، کسی می تونه فرق این دو اصطلاح را در استفاده از اشاره گر ها توضیح بده؟!
مرسی.
کامبیز اسدزاده
سه شنبه 31 تیر 1393, 09:45 صبح
سلام، کسی می تونه فرق این دو اصطلاح را در استفاده از اشاره گر ها توضیح بده؟!
مرسی.
سلام ؛
به طور کلی اشاره گرها در C++ يكي از پركاربردترين مفهومات در برنامه نويسي مي باشند که اشاره گرها براي دسترسي به حافظه heap مورد استفاده قرار میگیرند که به طور خاصی در C++ ما میتونیم با اشاره گرها رسما بازی کنیم که این امکان در زبان های مشابهی مثل Java وجود ندارد.
وقتی ما میایین یک متغیری رو تعریف میکنیم مثلا به اسم x داراي دو مؤلفه هستش يكي محتواي آن خانه از حافظه و ديگري آدرس آن خانه در حافظه.
حالا فرق بین غیر مرجع (Dereferencing) و مرجع (Referencing) در چیه؟
خب در Dereferencing ما توسط علامت (*) ستاره یا به اصطلاح رسمی (asterisk character) اشاره میکنیم به محتویات خانه در حافظه.
و اما در حالت مرجع (Referecing) : ما توسط علامت (&) اشاره میکنیم به آدرس موجود در حافظه که برای متغیر درنظر گرفته شده است.
به این مثال توجه کنید :
#include <iostream>
using namespace std;
int main()
{
int i = 5;
int * p;
p = &i; // برگشت دهنده آدرس حافظه از متغیر که مقدارش هست 5
int j = 5;
int * z;
z = &i;
*z = 7; // برگشت مقداری که در حافظه موجود در متغیر تعریف شده یعنی 7
int a = 1;
cout << p << endl;
cout << *z << endl;
getchar();
}
در قسمت اول از روش مرجع استفاده کردیم و در قسمت دوم از حالت غیر مرجع استفاده کردیم فرقشون این هست در حالت اول خروجی میشه آدرس متغیر در حافظه یعنی : 0039FB54 و در مقدار دوم خروجی میشه مقدار موجود در متغیر یعنی 7
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.