انواع دادهی اشارهگر در ++C
انواع دادهی اشارهگر در ++C
اشارهگرها (Pointers) در ++C انواع مختلفی دارند که هرکدام کاربرد خاصی دارند. در ادامه مهمترین انواع اشارهگرها رو بررسی میکنیم:
۱. اشارهگرهای معمولی (Normal Pointers)
این اشارهگرها به یک متغیر از یک نوع خاص اشاره میکنند.
int* ptr = &x; // اشارهگر به متغیر x
۲. اشارهگر تهی (Null Pointer)
این اشارهگر مقدار nullptr یا NULL میگیرد و به هیچ آدرسی اشاره نمیکند.
۳. اشارهگر به اشارهگر (Pointer to Pointer)
این نوع اشارهگر به آدرسی اشاره میکند که خودش یک اشارهگر است.
int* ptr = &x;
int** pptr = &ptr; // اشارهگر به اشارهگر
۴. اشارهگر ثابت (Constant Pointer)
دو نوع اشارهگر ثابت داریم:
با تهیه یک اشتراک ماهانه در پلتفرم Elimi|علیمی، بدون محدودیت به تمام دورهها، پروژهها و مسیرهای یادگیری دسترسی پیدا کنید.
- اشارهگری که مقدارش ثابت است:
- اشارهگری که خودش ثابت است:
- ترکیب هر دو:
const int* const ptr = &x; // هم مقدار و هم اشارهگر ثابت است
۵. اشارهگر Void (Void Pointer)
این اشارهگر میتواند به هر نوع دادهای اشاره کند ولی قبل از استفاده باید تبدیل نوع (Type Casting) شود.
int x = 10;
ptr = &x; // اشاره به یک متغیر صحیح
۶. اشارهگر به آرایه (Pointer to Array)
int* ptr = arr; // اشارهگر به اولین عنصر آرایه
۷. اشارهگر به تابع (Pointer to Function)
برای نگه داشتن آدرس یک تابع و استفاده از آن:
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
using namespace std;
int main() {
unique_ptr ptr = make_unique(10);
cout << *ptr << endl;
return 0;
}
انواع دادهی اشارهگر در ++C
اشارهگرها (Pointers) در ++C انواع مختلفی دارند که هرکدام کاربرد خاصی دارند. در ادامه مهمترین انواع اشارهگرها رو بررسی میکنیم:
۱. اشارهگرهای معمولی (Normal Pointers)
این اشارهگرها به یک متغیر از یک نوع خاص اشاره میکنند.
int* ptr = &x; // اشارهگر به متغیر x
۲. اشارهگر تهی (Null Pointer)
این اشارهگر مقدار nullptr یا NULL میگیرد و به هیچ آدرسی اشاره نمیکند.
۳. اشارهگر به اشارهگر (Pointer to Pointer)
این نوع اشارهگر به آدرسی اشاره میکند که خودش یک اشارهگر است.
int* ptr = &x;
int** pptr = &ptr; // اشارهگر به اشارهگر
۴. اشارهگر ثابت (Constant Pointer)
دو نوع اشارهگر ثابت داریم:
- اشارهگری که مقدارش ثابت است:
- اشارهگری که خودش ثابت است:
- ترکیب هر دو:
const int* const ptr = &x; // هم مقدار و هم اشارهگر ثابت است
۵. اشارهگر Void (Void Pointer)
این اشارهگر میتواند به هر نوع دادهای اشاره کند ولی قبل از استفاده باید تبدیل نوع (Type Casting) شود.
int x = 10;
ptr = &x; // اشاره به یک متغیر صحیح
۶. اشارهگر به آرایه (Pointer to Array)
int* ptr = arr; // اشارهگر به اولین عنصر آرایه
۷. اشارهگر به تابع (Pointer to Function)
برای نگه داشتن آدرس یک تابع و استفاده از آن:
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
using namespace std;
int main() {
unique_ptr ptr = make_unique(10);
cout << *ptr << endl;
return 0;
}
با تهیه یک اشتراک ماهانه در پلتفرم Elimi|علیمی، بدون محدودیت به تمام دورهها، پروژهها و مسیرهای یادگیری دسترسی پیدا کنید.