الگوریتم اول

لطفا صبر کنید...

انواع داده‌ی اشاره‌گر در ++C

اشاره‌گرها (Pointers) در ++C انواع مختلفی دارند که هرکدام کاربرد خاصی دارند. در ادامه مهم‌ترین انواع اشاره‌گرها رو بررسی می‌کنیم:

۱. اشاره‌گرهای معمولی (Normal Pointers)

این اشاره‌گرها به یک متغیر از یک نوع خاص اشاره می‌کنند.

int x = 10;
int* ptr = &x;  // اشاره‌گر به متغیر x

۲. اشاره‌گر تهی (Null Pointer)

این اشاره‌گر مقدار nullptr یا NULL می‌گیرد و به هیچ آدرسی اشاره نمی‌کند.

int* ptr = nullptr;  // مقداردهی اولیه برای جلوگیری از اشاره به آدرس نامعتبر

۳. اشاره‌گر به اشاره‌گر (Pointer to Pointer)

این نوع اشاره‌گر به آدرسی اشاره می‌کند که خودش یک اشاره‌گر است.

int x = 5;
int* ptr = &x;
int** pptr = &ptr;  // اشاره‌گر به اشاره‌گر

۴. اشاره‌گر ثابت (Constant Pointer)

دو نوع اشاره‌گر ثابت داریم:

  • اشاره‌گری که مقدارش ثابت است:
const int* ptr = &x;  // مقدار x را نمی‌توان تغییر داد
  • اشاره‌گری که خودش ثابت است:
int* const ptr = &x;  // نمی‌توان ptr را به متغیر دیگری اشاره داد
  • ترکیب هر دو:
    const int* const ptr = &x;  // هم مقدار و هم اشاره‌گر ثابت است

۵. اشاره‌گر Void (Void Pointer)

این اشاره‌گر می‌تواند به هر نوع داده‌ای اشاره کند ولی قبل از استفاده باید تبدیل نوع (Type Casting) شود.

void* ptr;
int x = 10;
ptr = &x;  // اشاره به یک متغیر صحیح

۶. اشاره‌گر به آرایه (Pointer to Array)

int arr[] = {1, 2, 3};
int* ptr = arr;  // اشاره‌گر به اولین عنصر آرایه

۷. اشاره‌گر به تابع (Pointer to Function)

برای نگه داشتن آدرس یک تابع و استفاده از آن:

#include
using namespace std;

void sayHello() {
    cout << "Hello, World!" << endl;
}

int main() {
    void (*funcPtr)() = sayHello;  // اشاره‌گر به تابع
    funcPtr();  // اجرای تابع از طریق اشاره‌گر
    return 0;
}

۸. اشاره‌گر هوشمند (Smart Pointer) - از ++C ورژن 11 به بعد

در ++C می‌توان از اشاره‌گرهای هوشمند مثل unique_ptr، shared_ptr و weak_ptr استفاده کرد که مدیریت حافظه را بهینه می‌کنند.

#include
#include
using namespace std;

int main() {
    unique_ptr ptr = make_unique(10);  
    cout << *ptr << endl;
    return 0;
}