نسبت دادن آدرس یک اشاره گر به اشاره گری از نوع دیگر
چجوری می شه مقدار یک اشاره گر رو به اشاره گری از نوع دیگر نسبت داد؟
کامپایلر نسبت دادنشون رو به شکل عادی قبول نمی کنه مثلا وقتی کد زیر رو می نویسم:
ip = cp//ip is int pointer and cp is char pointer
ارور "*can not convert int * to char" رو می ده و مجبورم به شکل من درآوردی مقدار اشره گر اولی رو چاپ کنم و بعد با اسکن اف بریزمش تو اشاره گر دومی
نقل قول: نسبت دادن آدرس یک اشاره گر به اشاره گری از نوع دیگر
در اکثر موارد به شکل صریح با پرانتر می توانید تبدیلات مجاز را انجام دهید.
char *y;
// fill it , use it
int* x = (int*) y;
در C++ برای این کار عملگرهایی خاصی وجود دارد که امن تر انجام می دهند، که برای کار شما reinterpret_cast نیاز هست(تبدیل هر نوعی)
int *x = reinterpret_cast<int*>( y );
سایر موارد:
نقل قول:
dynamic_cast: Used for conversion of polymorphic types.
static_cast: Used for conversion of nonpolymorphic types.
const_cast : Used to remove the const, volatile, and __unaligned attributes.
reinterpret_cast: Used for simple reinterpretation of bits.
safe_cast : Used to produce verifiable MSIL.