ماذا يعني هذا المؤشر و على ماذا يؤشر :blink:
ولماذا يستعمل
Void* ahmad;
ماذا يعني هذا المؤشر و على ماذا يؤشر :blink:
ولماذا يستعمل
Void* ahmad;
شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي
وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي
كلمة void تعني الفراغ أو لا شئ
و void * يعني مؤشر لا يؤشر على شئ !!!!!!!!!!!!!!! كيف أنا أقول كيف
المعروف أنه لا يوجد نوع void لأنه إن وجد ماذا سيكون حجمه ؟؟؟؟ لا يمكن التنبأ فيه .
ولكن يوجد void * أي مؤشر يؤشر على void والمعروف أنه المؤشرات حجمها ثابت ( 4 بايت أو 8 بايت ) سواء
مهما إختلف حجم المؤشر عليه . فلذلك يمكن القول بإمكانية وجود void * لأننا نعرف حجمه مسبقاً لكن لا يمكن أن
نستخدمه للوصول إلى مكان في الذاكرة أي مثل قول 10=v* لأننا وبكل بساطة لا نعرف نوع الكائن الذي نؤشر عليه . ولكن يمكن الوصول إلى أي مكان في الذاكرة إذا أستخدمنا ال cast
إذاً ما فائدته ؟؟؟؟
قد يسمى أحياناً بال generic pointer له فوائد عندما لا تكون هناك حاجة للنوع مثل إستخدام malloc و free وعند التعامل مع البيانات بشكل bytes وغيرها مما يستخدم في دوال Strings وأي شئ أنا حاضر .
مثال على استخدامه بعد اذنك :P
شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي
وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي
بسم الله الرحمن الرحيم
السلام عليكم
دة مثال لتوضيح ال void*
#include <iostream>
#include <conio>
void main()
{
int x = 12;
float y = 1.2;
char z = 'a';
int* intptr;
float* floatptr;
char* charptr;
void* ptr; //pointer to void as it will store addresses of any variables
intptr = &x; //ok int* to int*
//intptr = &y; error can't convert float* to int*
//intptr = &z; error can't convert char* to int*
ptr = &x; //ok int* to void
cout<<ptr<<endl;
int* ptrint = reinterpret_cast<int*>(ptr); //Cast it to int.
cout<<*ptrint<<endl;
ptr = &y; //ok float to void
cout<<ptr<<endl;
float* ptrfloat = reinterpret_cast<float*>(ptr); //Cast it to float.
cout<<*ptrfloat<<endl;
ptr = &z; //ok char to void
cout<<ptr<<endl;
char* ptrchar = reinterpret_cast<char*>(ptr); //Cast it to char.
cout<<*ptrchar<<endl;
getch();
}فائدته عظيمة خصوصا في برمجة os :) خصوصا اذا كنت تبي تختصر اقل قدر من المساحة بدال ما تحتاج بوينتر مثلا لكل نوع وانت بالاصل محتاج بوينتر واحد راح يغنيك الجنريك بوينتر
هذا الموضوع مغلق.