Pointer to Void

Pointer to Void: जैसाकि हमने पहले भी बताया कि जिस प्रकार के Data Type के Address को किसी Pointer में Store करना होता है, ठीक उसी प्रकार के Data Type का Pointer Variable होना चाहिए। यानी int प्रकार के Variable का Pointer भी int प्रकार का होना चाहिए और यदि float प्रकार के Variable का Address store करना है तो हमें float प्रकार का ही Pointer Variable declare करना जरूरी होता है। लेकिन “C++” में void एक ऐसा General Purpose Pointer होता है, जो किसी भी प्रकार के Data Type के Variable का Address Store कर सकता है। इसे “Pointer to void” कहा जाता है। जैसे:

void* ptr;   // ptr can point to any data type

इस प्रकार के Pointers कुछ खास कामों को करने के लिए Use किए जाते हैं। उदाहरण के लिए यदि हमें किसी Pointer को ऐसे Function में Pass करना हो, जो विभिन्न प्रकार के Data Type पर Operation Perform कर सकता हो, तो हम उस Function में Argument के रूप में void प्रकार का Pointer Pass करते हैं। void pointer को समझने के लिए निम्न Program देखें जिसमें Pointer to void का प्रयोग किया गया है। ये Program दर्शाता है कि यदि हम void का प्रयोग नहीं करते हैं, तो हमें Pointer को कोई ना कोई Address प्रदान करना जरूरी होता है।

	// pointers to type void
	#include <iostream.h>
	#include <conio.h>

	void main()
	{
		int intvar;                	// integer variable
		float flovar;              	// float variable

		int* ptrint;               	// define pointer to int
		float* ptrflo;             	// define pointer to float
		void* ptrvoid;             	// define pointer to void

		ptrint = &intvar;          	// ok, int* to int*
		// ptrint = &flovar;          	// error, float* to int*

		// ptrflo = &intvar;          	// error, int* to float*
		ptrflo = &flovar;          	// ok, float* to float*

		ptrvoid = &intvar;         	// ok, int* to void*
		ptrvoid = &flovar;         	// ok, float* to void*
	}

हम intvar का Address ptrint को Assign कर सकते हैं क्योंकि दोनों ही int* प्रकार के हैं लेकिन हम flovar का Address ptrint को Assign नहीं कर सकते हैं, क्योंकि flovar float* प्रकार का है जबकि intvar int* प्रकार का। लेकिन ptrvoid को किसी भी Pointer जैसे कि int* या float* का Address Assign किया जा सकता है, क्योंकि ये एक void Pointer या Pointer to void है।

जहां तक हो सके void को avoid करना चाहिए। ऐसा इसलिए किया जाना चाहिए क्योंकि हर Pointer किसी विशेष प्रकार के Variable या Object को ही Point करे, ताकि किसी प्रकार की Mistake ना हो। हालांकि कई जगहों पर void का अपना महत्व होता है और void को उस स्थान पर Use करना अन्‍य Pointers को Use करने की तुलना में ज्यादा बेहतर होता है।

Pointers का प्रयोग कई स्थितियों में बहुत उपयोगी होता है। जैसे किसी Array के किसी Element को Access करने के लिए या किसी Function में Argument Pass करने के लिए Pointers काफी उपयोगी साबित होते हैं। विशेष रूप से जब किसी Array को Function में Argument के रूप में Pass करना हो, तब Array को Pointer की तरह Function में Pass करना काफी सुविधाजनक होता है। (Pointer to Void – C4Learn)

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS