PDA

View Full Version : سوال: اشاره گر از نوع void



mohsen_nikoei
جمعه 10 مهر 1394, 17:07 عصر
سلام دوستان لطفا در مورد اشاره گر از نوع void و نحوه چاپ محتویاتش اگر کسی چیزی میدونه توضیح بده با تشکر....

zero_ox
شنبه 11 مهر 1394, 10:19 صبح
وقتی که ازکلمه کلیدی void درنوع برگشتی یک تابع استفاده می کنید مشخص می کنید که تابع مقداری رو برگشت نمی ده وقتی که ازاون درپارامترتابع استفاده می کنید مشخص می کنید که تابع پارامتری نمی گیره . زمانی هم که یک اشاره گرvoid تعریف می کنید یک اشاره گرعمومی تعریف می کنید یعنی . اگر یک اشاره گر ازنوع void * داشته باشید می تونه به هر متعیری که با کلمه کلیدی const یا volatile اعلام نشده باشه اشاره کنه . یک اشاره گر void نمی تونه به جایی اشاره کنه مگراینکه که به انواع دیگرتبدیل بشه . یک اشاره گر void * می تونه به هرنوعی دیگه ازاشاره گرها تبدیل می شه مثل int ,float , یک اشاره گرvoid می تونه به یک تابع اشاره کنه اما نمی تونه عضو یک کلاس باشه در c++ ;
شما نمی تونید متغیری ازنوع void داشته باشید
شما نمی تونید یک متعیر رو ازنوع void اعلان کنید

// void.cpp
void vobject; // error mide C2182
void *pv; // okay
int *pint; int i;
int main() {
pv = &i;
// Cast optional in C required in C++
pint = (int *)pv;
{




به نقل از msdn

mohsen_nikoei
پنج شنبه 22 بهمن 1394, 16:32 عصر
همین کدی که نوشتید ارور error C2182: 'vobject': illegal use of type 'void' رو میده

mohsen_nikoei
پنج شنبه 22 بهمن 1394, 16:33 عصر
همین کدی که نوشتید ارور error C2182: 'vobject': illegal use of type 'void' رو میده


همین کدی که نوشتید ارور error C2182: 'vobject': illegal use of type 'void' رو میده

zero_ox
پنج شنبه 22 بهمن 1394, 22:33 عصر
سلام :
شما اگر در کد با لاهم نگاه کنید همین ارور کامنت شده هست داخل کد
بزار با یه کد تکمیل کنم : شما فقط می تونید به اشاره گر void به هرنوع داده ای اشاره کنید اما نمی تونید محتویات اشاره گر void رو چاپ کنید . یا مثلا یه اشاره گر void رو ++ کنید .

int x=5;
double y=4.00;
void *p;
p=&x;//ok
p=&y;//ok
++ *p // خطاست
cout<<*p; خطاست