کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش اشاره گرها در زبان ++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
1401/12/04 1121
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...