C اور C++ میں باطل* کیا ہے۔

C Awr C My Batl Kya



C اور C++ دو پروگرامنگ زبانیں ہیں جو میموری کے انتظام اور ڈیٹا میں ہیرا پھیری کے لیے پوائنٹرز پر بہت زیادہ انحصار کرتی ہیں۔ پوائنٹرز وہ متغیر ہوتے ہیں جو میموری ایڈریسز کو اسٹور کرتے ہیں، جو پروگراموں کو میموری میں محفوظ ڈیٹا تک رسائی اور ہیرا پھیری کرنے کی اجازت دیتے ہیں۔ پوائنٹر کی ایک خاص قسم ہے۔ باطل پوائنٹر (باطل*) ایک کے نام سے بھی جانا جاتا ہے۔ عام پوائنٹر .

باطل پوائنٹر کیا ہے (باطل*)؟

ایک باطل پوائنٹر، جسے عام پوائنٹر بھی کہا جاتا ہے، ایک ایسا پوائنٹر ہے جو کسی مخصوص ڈیٹا کی قسم سے منسلک نہیں ہوتا ہے، جو اسے کسی بھی قسم کے ڈیٹا کی طرف اشارہ کرنے کے لیے موزوں بناتا ہے۔ دوسرے الفاظ میں، a باطل پوائنٹر ایک عدد، ایک کردار، ایک تار، یا کسی دوسرے ڈیٹا کی قسم کی طرف اشارہ کر سکتا ہے۔ یہ لچک C اور C++ پروگرامنگ میں void پوائنٹرز کو ایک طاقتور ٹول بناتی ہے۔

C اور C++ میں باطل پوائنٹر کا اعلان

C اور C++ میں، باطل پوائنٹر مندرجہ ذیل نحو کے ذریعے اعلان کیا جاتا ہے:







باطل * ptr ;

C اور C++ میں باطل پوائنٹرز کا استعمال

باطل اشارے C میں زیادہ تر استعمال کیا جاتا ہے جب متغیر کی ڈیٹا کی قسم معلوم نہیں ہوتی ہے یا رن ٹائم کے وقت مختلف ہوسکتی ہے۔ وہ ڈیٹا کو اس کے مخصوص ڈیٹا کی قسم کو جاننے کی ضرورت کے بغیر اسے ذخیرہ کرنے اور اس میں ہیرا پھیری کرنے کے عمومی طریقے کی اجازت دیتے ہیں۔ یہ خاص طور پر ایسے فنکشنز یا ڈیٹا سٹرکچرز سے نمٹنے کے وقت مددگار ہے جو مختلف قسم کے ڈیٹا کو سنبھال سکتے ہیں۔



کا ایک عام استعمال باطل اشارے میموری مختص کرنے کے افعال میں ہے جیسے malloc() جو ایک صفر پوائنٹر پوائنٹ کو میموری کے بلاک میں لوٹاتا ہے جسے کسی بھی قسم کے ڈیٹا کو ذخیرہ کرنے کے لیے استعمال کیا جا سکتا ہے۔ اس کے بعد پروگرامر مختص میموری بلاک میں ذخیرہ شدہ ڈیٹا تک رسائی اور ہیرا پھیری کے لیے باطل پوائنٹر کو مناسب ڈیٹا ٹائپ پر کاسٹ کر سکتا ہے۔



C میں باطل پوائنٹرز کا ایک اور استعمال in ہے۔ فنکشن پوائنٹر ، جو متغیرات ہیں جو فنکشن کے میموری ایڈریس کو محفوظ کرتے ہیں۔ باطل پوائنٹرز کو کسی بھی فنکشن کے میموری ایڈریس کو ذخیرہ کرنے کے لیے استعمال کیا جا سکتا ہے، اس کی واپسی کی قسم یا پیرامیٹر لسٹ سے قطع نظر، فنکشن پوائنٹر کے استعمال میں مزید لچک پیدا کرنے کی اجازت دیتا ہے۔





کا استعمال باطل اشارے C++ میں تقریباً یکساں ہے، تاہم، ان کا استعمال مختلف کلاسوں کی اشیاء کے لیے عام انٹرفیس بنانے کے لیے بھی کیا جا سکتا ہے۔ یہ اکثر ورچوئل فنکشنز کے استعمال کے ذریعے حاصل کیا جاتا ہے، جو مختلف کلاسوں کی اشیاء کو یکساں طور پر برتاؤ کرنے کی اجازت دیتے ہیں۔ مزید، C++ C کے مقابلے میں زیادہ سخت قسم کی چیکنگ پیش کرتا ہے، جس کا مطلب ہے کہ استعمال کرنا باطل اشارے غلط طریقے سے مزید غلطیاں اور کیڑے پیدا ہو سکتے ہیں۔

C اور C++ میں باطل پوائنٹرز استعمال کرتے وقت غور کرنے کے لیے نکات

یہاں کچھ نکات ہیں جن پر آپ کو استعمال کرتے وقت غور کرنا چاہئے۔ باطل اشارے C اور C++ میں۔



1: سی میں، باطل* ریٹرن ویلیو اور فنکشن پیرامیٹر کے طور پر استعمال کیا جا سکتا ہے لیکن C++ میں آپ کے پاس ایک مخصوص ڈیٹا ٹائپ پوائنٹر ہونا ضروری ہے۔

مثال کے طور پر:

C میں، کوڈ ذیل میں دیا گیا ہے:

# شامل کریں

# شامل کریں

باطل * add_numbers ( int a , int ب ) {

int * نتیجہ = malloc ( کا سائز ( int ) ) ;

* نتیجہ = a + ب ;

واپسی ( باطل * ) نتیجہ ;

}

باطل پرنٹ_نتیجہ ( باطل * نتیجہ ) {

int * ptr = ( int * ) نتیجہ ;

printf ( نتیجہ ہے: %d \n ' , * ptr ) ;

مفت ( ptr ) ;

}

int مرکزی ( ) {

int نمبر 1 = 5 , نمبر 2 = 7 ;

باطل * نتیجہ = add_numbers ( نمبر 1 , نمبر 2 ) ;

پرنٹ_نتیجہ ( نتیجہ ) ;

واپسی 0 ;

}

مندرجہ بالا کوڈ ایک فنکشن کی وضاحت کرتا ہے۔ add_numbers() جو لوٹتا ہے a باطل* دلائل کے طور پر گزرے ہوئے دو عدد عدد کو شامل کرنے کے نتیجے کی طرف اشارہ کرتا ہے۔ فنکشن پرنٹ_نتیجہ() لیتا ہے باطل* پوائنٹر اور نتیجہ پرنٹ کرتا ہے۔ مین () فنکشن میں، ہم کال کرتے ہیں۔ add_numbers() اور نتیجہ پاس کریں باطل* پوائنٹر کو پرنٹ_نتیجہ() پرنٹنگ کے لئے.

C++ میں، ایک مخصوص ڈیٹا کی قسم کی ضرورت ہوتی ہے۔

# شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std ;

باطل پرنٹ انٹ ( int * ایک پر ) {

cout << 'عدد یہ ہے:' << * ایک پر << endl ;

}

int مرکزی ( ) {

int ایکس = 10 ;

int * ptr = اور ایکس ;

پرنٹ انٹ ( ptr ) ;

واپسی 0 ;

}

2: C میں، آپ void پوائنٹر کو دوسری قسم کے پوائنٹر میں تبدیل کر سکتے ہیں۔ مضمر تبدیلی. لیکن C++ میں آپ کو استعمال کرنا ہوگا۔ واضح تبدیلی تبدیل کرنے کے لئے باطل پوائنٹر کسی دوسرے پوائنٹر کی قسم کے لیے۔

C اور C++ دونوں کے درمیان فرق کو واضح کرنے کے لیے یہاں ایک سادہ کوڈ کی مثال ہے۔ مضمر اور واضح تبدیلی کی باطل اشارے پوائنٹر کی دوسری اقسام کے لیے:

C میں، درج ذیل کوڈ استعمال ہوتا ہے:

# شامل کریں

باطل پرنٹ چار ( باطل * چودھری ) {

چار c = * ( چار * ) چودھری ;

printf ( '%c \n ' , c ) ;

}

int مرکزی ( ) {

چار c = 'a' ;

باطل * ptr = اور c ;

پرنٹ چار ( ptr ) ;

واپسی 0 ;

}

مندرجہ بالا کوڈ ایک فنکشن کی وضاحت کرتا ہے۔ پرنٹ چار جو ایک void پوائنٹر کو پیرامیٹر کے طور پر لیتا ہے اور اس میموری والے مقام پر محفوظ کریکٹر کو پرنٹ کرتا ہے۔ مین فنکشن میں ایک چار متغیر c کی وضاحت کی گئی ہے اور اس کا پتہ باطل پوائنٹر میں محفوظ ہے۔ ptr دی پرنٹ چار فنکشن کو پھر کے ساتھ بلایا جاتا ہے۔ باطل پوائنٹر 'ptr' ایک دلیل کے طور پر. void پوائنٹر کو واضح طور پر میں چار پوائنٹر میں تبدیل کیا جاتا ہے۔ 'پرنٹ چار' میں ذخیرہ شدہ قدر تک رسائی اور پرنٹ کرنے کا فنکشن 'c' .

C++ میں، کوڈ ذیل میں دیا گیا ہے:

# شامل کریں

باطل پرنٹ انٹ ( باطل * ایک پر ) {

int * ptr = static_cast < int *> ( ایک پر ) ;

std :: cout << * ptr << std :: endl ;

}

int مرکزی ( ) {

int ایکس = 10 ;

باطل * ptr = اور ایکس ;

پرنٹ انٹ ( ptr ) ;

واپسی 0 ;

}

مندرجہ بالا کوڈ ایک فنکشن کی وضاحت کرتا ہے۔ پرنٹ انٹ جو پیرامیٹر کے بطور void پوائنٹر نمبر لیتا ہے اور اسے استعمال کرتے ہوئے ایک عدد پوائنٹر پر ڈال دیتا ہے static_cast آپریٹر . فنکشن پھر کاسٹڈ پوائنٹر کے ذریعہ اشارہ کردہ عدد کی قدر پرنٹ کرتا ہے۔ مین فنکشن میں، ایک عدد متغیر x کی وضاحت کی جاتی ہے اور اس کا پتہ a میں محفوظ کیا جاتا ہے۔ باطل پوائنٹر پی ٹی آر، جو اس کے بعد کو منتقل کیا جاتا ہے۔ پرنٹ انٹ فنکشن پروگرام کا آؤٹ پٹ x کی قدر ہے، جو کہ 10 ہے۔

حتمی خیالات

دی باطل C اور C++ میں پوائنٹرز ڈیٹا کی مخصوص قسم کو جاننے کی ضرورت کے بغیر ہیرا پھیری کرنے کا ایک طاقتور طریقہ فراہم کرتے ہیں۔ وہ میموری مختص کرنے اور فنکشن پوائنٹرز کے ساتھ ساتھ C++ میں مختلف کلاسوں کی اشیاء کے لیے ایک عام انٹرفیس بنانے کے لیے مفید ہیں۔ تاہم، ان کے استعمال میں C اور C++ کے درمیان فرق پر غور کرنا ضروری ہے۔ باطل اشارے جیسے کہ C++ میں ڈیٹا کی مخصوص اقسام کی ضرورت اور void پوائنٹرز کو دوسری پوائنٹر اقسام میں ڈالتے وقت واضح تبدیلی کی ضرورت۔ ان نکات پر احتیاط سے غور کرنے سے زیادہ موثر اور موثر استعمال ہو سکتا ہے۔ باطل اشارے پروگرامنگ میں.