استفاده از & و

کاربرد عملگرهای & و * در زبان C

در زبان برنامه‌نویسی C، دو عملگر & و * نقش اساسی در مدیریت حافظه و اشاره‌گرها دارند. این عملگرها به برنامه‌نویس اجازه می‌دهند به صورت مستقیم با آدرس‌های حافظه کار کند.

نکته کلیدی: عملگر & آدرس یک متغیر را برمی‌گرداند، در حالی که عملگر * به مقدار موجود در آدرس اشاره‌گر دسترسی پیدا می‌کند.

عملگر آدرس (&)

عملگر & که به نام "عملگر آدرس" شناخته می‌شود، آدرس حافظه یک متغیر را برمی‌گرداند. این آدرس نشان‌دهنده مکان فیزیکی متغیر در حافظه RAM است.

  • برای متغیرهای معمولی استفاده می‌شود
  • خروجی آن یک مقدار هگزادسیمال است
  • در توابع برای ارسال آرگومان‌ها به روش ارسال با مرجع کاربرد دارد

مثال:

int x = 10;
printf("آدرس x: %p", &x);

عملگر ارجاع (*)

عملگر * که به نام "عملگر ارجاع" یا "عملگر غیرمستقیم" شناخته می‌شود، مقدار ذخیره شده در آدرس یک اشاره‌گر را برمی‌گرداند. این عملگر مکمل عملگر & است.

  1. برای دسترسی به مقدار متغیر از طریق اشاره‌گر استفاده می‌شود
  2. در تعریف اشاره‌گرها نیز به کار می‌رود
  3. امکان تغییر مقدار متغیر اصلی را از طریق اشاره‌گر فراهم می‌کند
عملگر کاربرد مثال
& دریافت آدرس متغیر &x
* دسترسی به مقدار اشاره‌گر *ptr

برای درک بهتر مفاهیم آدرس حافظه و اشاره‌گرها در زبان C، می‌توانید اینجا را بررسی کنید.

کاربردهای عملی

این عملگرها در موارد زیر کاربرد فراوانی دارند:

  • تخصیص پویای حافظه (malloc, calloc)
  • پیاده‌سازی ساختارهای داده مانند لیست‌های پیوندی
  • بهینه‌سازی عملکرد برنامه با کاهش کپی‌برداری داده‌ها
  • کار با آرایه‌ها و رشته‌ها

توجه: استفاده نادرست از اشاره‌گرها می‌تواند منجر به مشکلات امنیتی مانند سرریز بافر یا دسترسی به مکان‌های غیرمجاز حافظه شود.

درک صحیح این دو عملگر پایه‌ای برای تسلط بر مفاهیم پیشرفته‌تر مانند آرایه‌های پویا، توابع بازگشتی و مدیریت حافظه در زبان C است. برای تمرین بیشتر، سعی کنید برنامه‌های ساده‌ای بنویسید که از این عملگرها برای تغییر مقادیر متغیرها استفاده می‌کنند.