مشخصات مقاله
-
0.0
-
1121
-
0
-
0
آموزش اشاره گرها در زبان ++C
ایجاد اشاره گر
در ابتدا باید بدانید که موقع تعریف هر متغیری در سیستم کامپیوتری به آن حافظه تعلق می گیرد، می توانیم آدرس حافظه یک متغیر را با استفاده از عملگر & بدست آوریم. برای دسترسی به یک متغیر می توانیم از اشاره گرها استفاده نماییم. درواقع اشاره گرها، آدرس یک متغیر در حافظه را در خود ذخیره می نمایند و به این طریق می توان به مقدار متغیر دسترسی پیدا نمود.(عملگر ارجاع & برای آدرس و عملگر اشاره گر به آدرس اختصاص داده شده به متغیر اشاره می کند.)
#include
#include
using namespace std;
int main() {
string food = "Pizza";
cout << food << "\n";
cout << &food << "\n";
return 0;
}
خروجی :
- Pizza
- 0x6dfed4
اشاره گر متغیری است که آدرس حافظه را به عنوان مقدار خود ذخیره می کند. یک متغیر اشاره گر به یک نوع داده (مانند int یا string) از همان نوع اشاره و با عملگر * ایجاد می شود. آدرس متغیری که با آن کار می کنید به اشاره گر اختصاص داده می شود. برای تمرین، یک متغیر اشاره گر با نام ptr ایجاد کنید که به یک متغیر رشته اشاره می نماید، با استفاده از علامت ستاره * (string* ptr). توجه داشته باشید که نوع اشاره گر باید با نوع متغیری که با آن کار می کنید مطابقت داشته باشد. از عملگر & برای ذخیره آدرس حافظه متغیری به نام food استفاده نمایید و آن را به اشاره گر اختصاص دهید. اکنون، ptr مقدار آدرس حافظه food را نگه می دارد.
نکته: سه راه برای اعلام متغیرهای اشاره گر وجود دارد، اما روش اول ترجیح داده می شود:
string* mystring; // Preferred
string *mystring;
string * mystring;
در مثال بالا، از متغیر اشاره گر برای به دست آوردن آدرس حافظه یک متغیر (همراه با عملگر & مرجع) استفاده کردیم. با این حال، می توانید با استفاده از عملگر * از اشاره گر برای بدست آوردن مقدار متغیر استفاده نمایید:
#include
#include
using namespace std;
int main() {
string food = "Pizza"; // Variable declaration
string* ptr = &food; // Pointer declaration
// Reference: Output the memory address of food with the pointer
cout << ptr << "\n";
// Dereference: Output the value of food with the pointer
cout << *ptr << "\n";
return 0;
}
خروجی :
- 0x6dfed4
- Pizza
توجه داشته باشید که علامت * ، می تواند گیج کننده باشد، زیرا دو کار متفاوت در کد ما انجام می دهد. هنگامی که در اعلان (string*ptr) استفاده می شود، یک متغیر اشاره گر ایجاد می کند. همچنین هنگامی که در اعلان استفاده نمی شود، به عنوان یک عملگر عدم ارجاع عمل می کند.
تغییر مقدار اشاره گر
شما می توانید مقدار اشاره گر را تغییر دهید. اما توجه داشته باشید که این مقدار متغیر اصلی را نیز تغییر می دهد:
#include
#include
using namespace std;
int main() {
string food = "Pizza";
string* ptr = &food;
// Output the value of food
cout << food << "\n";
// Output the memory address of food
cout << &food << "\n";
// Access the memory address of food and output its value
cout << *ptr << "\n";
// Change the value of the pointer
*ptr = "Hamburger";
// Output the new value of the pointer
cout << *ptr << "\n";
// Output the new value of the food variable
cout << food << "\n";
return 0;
}
خروجی :
- Pizza
- 0x6dfed4
- Pizza
- Hamburger
- Hamburger