صف اور پوائنٹر کے مابین فرق

مصنف: Laura McKinney
تخلیق کی تاریخ: 1 اپریل 2021
تازہ کاری کی تاریخ: 6 مئی 2024
Anonim
Crochet #13 How to crochet a layered baby dress
ویڈیو: Crochet #13 How to crochet a layered baby dress

مواد


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

  1. موازنہ چارٹ
  2. تعریف
  3. کلیدی اختلافات
  4. نتیجہ اخذ کرنا

موازنہ چارٹ

موازنہ کی بنیادصفپوائنٹر
اعلامیہ// C ++ میں
ٹائپ کریں var_name؛
// جاوا میں
قسم کا نام۔
var_name = نئی قسم؛
// C ++ میں
ٹائپ کریں * var_name؛
کام کرنایکساں ڈیٹا ٹائپ کے متغیر کی قیمت کو اسٹور کرتا ہے۔اسی ڈیٹا ٹائپ کے کسی دوسرے متغیر کا پتہ جیسے پوائنٹر متغیر ڈیٹا ٹائپ اسٹور کریں۔
نسلاشارے کی ایک صف تیار کی جاسکتی ہے۔ایک سرنی کی طرف اشارہ تیار کیا جاسکتا ہے۔
جاوا سپورٹصف کے تصور کی حمایت کریں۔پوائنٹرز کی حمایت نہیں کرتا ہے۔
ذخیرہایک عام سرنی متغیر کی اہمیت کو ذخیرہ کرتا ہے اور پوائنٹر سرنی متغیر کا پتہ اسٹور کرتا ہے۔اشارے خاص طور پر متغیر کے پتے کو اسٹور کرنے کے لئے تیار کیے گئے ہیں۔
اہلیتایک سرنی عناصر کی تعداد کو ذخیرہ کرسکتی ہے ، جس میں سرنی متغیر کی جسامت کا ذکر ہوتا ہے۔ ایک پوائنٹر متغیر ایک وقت میں صرف ایک متغیر کا پتہ رکھ سکتا ہے۔


صف کی تعریف

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

// C ++ میں var_name ٹائپ کریں؛ // جاوا میں قسم کا نام۔ var_name = نئی قسم؛

یہاں 'ٹائپ' کسی ارے متغیر کی ڈیٹا ٹائپ کی نشاندہی کرتی ہے ، 'var_name' سرنی متغیر کو دیئے گئے نام کی نشاندہی کرتا ہے ، 'سائز' سرنی متغیر کی گنجائش کو ظاہر کرتا ہے یعنی اس صف کے متغیر میں 'ٹائپ' کے کتنے عناصر کو محفوظ کیا جاسکتا ہے۔ . کسی صف تک پہنچنے کے دو طریقے ہیں ، پہلا ‘پوائنٹر ریاضی’ اور دوسرا ‘سرنی اشاریہ’ جس میں سے ’’ پوائنٹر ریاضی ‘‘ تیز تر ہوتا ہے۔


// پوائنٹر ریاضی کے باضابطہ باطل ڈسپلے_ری (INT * S) کا استعمال کرتے ہوئے رسائی ing جبکہ (* s) s cout (<< "قیمت" << * s) ہے؛ * s ++؛ }

’’ اشارے کے ریاضی ‘‘ کا استعمال ’سرنی اشاریہ سازی‘ کے مقابلے میں تیزی سے کام کرے گا ، یعنی اس کے اشاریہ کو استعمال کرتے ہوئے سرنی متغیر تک رسائی حاصل کرنا۔ اگر آپ کو کسی فنکشن میں پوائنٹرز کی صف کو منتقل کرنے کی ضرورت ہے تو ، یہ ایک ہی طریقہ استعمال کرکے کیا جاسکتا ہے جس کو آپ عام سرے کو منتقل کرنے کے لئے استعمال کرتے ہیں۔ یعنی براہ راست فنکشن کو صف کے نام سے بلاؤ ، بغیر کسی اشارے کے۔

آئیے ہم اسے مثال کے ساتھ سمجھیں

// پوائنٹرز کی صف کا اعلان۔ انٹ * پی؛

یہاں ، یہ ظاہر کرتا ہے کہ ‘p’ انٹیجر قسم کی ایک صف ہے ، اس میں عددی قسم کے 10 متغیر کا پتہ ہوگا۔ آئیے مندرجہ بالا پوائنٹر سرنی کو ایک فنکشن ڈسپلے () میں منتقل کریں۔

ڈسپلے (p)؛ // فنکشن ڈسپلے پر کال کریں۔ باطل ڈسپلے (INT * d) {// پوائنٹر سرنی وصول کرنے کا فنکشن۔ (INT i = 0؛ i <10؛ i ++) out cout << ("انڈیکس" <

یہ فنکشن متغیرات میں موجود اقدار کو ظاہر کرے گا ، جن کے پتے اس پوائنٹر صف میں ترتیب سے محفوظ ہیں۔

پوائنٹر کی تعریف

پوائنٹر ایک متغیر ہے جو کسی دوسرے متغیر کا میموری ایڈریس رکھتا ہے۔ دونوں کا ڈیٹا ٹائپ ، پوائنٹر متغیر اور متغیر جس کا پتہ ایک پوائنٹر متغیر کو تفویض کیا جارہا ہے ، ایک جیسی ہونی چاہئے۔ پوائنٹر متغیر مندرجہ ذیل کے طور پر اعلان کیا جاتا ہے.

// C ++ میں * اعلامیہ * نام؛

یہاں ، ’قسم‘ ایک ڈیٹا ٹائپ ہے ، ‘نام’ پوائنٹر متغیر کا نام ہے۔ ’قسم‘ اس کی وضاحت کرتی ہے کہ پوائنٹر متغیر میں کس قسم کے متغیر کا پتہ اسٹور کیا جاسکتا ہے۔ مثال کے طور پر ، انٹیجر پوائنٹر انٹیجر متغیر کا پتہ اسٹور کرے گا۔ دو پوائنٹر آپریٹر ہیں ‘*’ اور ‘&’۔ آپریٹر ‘*’ پتے پر واقع قیمت لوٹاتا ہے ، جو متغیر میں محفوظ ہوتا ہے جس کے بعد ‘*’ نشان ہوتا ہے۔ ‘&’ آپریٹر متغیر کا پتہ واپس کرتا ہے جس کے بعد ‘&’ نشان ہوتا ہے۔

// مثال کے طور پر int b = 10 int a = & b؛ // یہاں بی کا پتہ متغیر میں محفوظ ہے۔ // کی اجازت دیتا ہے بی کا پتہ 2000 ہے ، لہذا اب a = 2000۔ int c = * a؛ // یہاں ، انٹیجر پوائنٹر متغیر * a وہ ویلیو واپس کرے گا جو ایک .ie میں اسٹورڈ ایڈریس پر واقع ہے۔ c = 10۔

صرف دو ریاضی آپریٹرز ہیں جن کا استعمال آپ اشارے پر کرسکتے ہیں یعنی اضافہ اور گھٹاوٹ۔ اگر آپ انٹیگرنٹ پوائنٹ پوائنٹر متغیر پر لگاتے ہیں تو اس میں ڈیٹا ٹائپ یعنی 2 بائٹس کے سائز سے اضافہ ہوگا ، کیوں کہ یہ انٹیجر پوائنٹر ہے ، انکریمنٹ پر اسے اگلے انٹیجر متغیر کی نشاندہی کرنا ہوگی۔ یہی حال کمی کا ہے۔

// p ایک عددی پوائنٹر ہے جس کی قیمت 2000 ہے۔ p ++؛ // اب پی = 2002۔ p--؛ // now p پھر 2000 پر مشتمل ہے جیسا کہ دو بائٹس کی کمی ہے۔

  1. ایک سرنی اسی طرح کے ڈیٹا کی اقسام کے متغیرات کو اسٹور کرتی ہے اور متغیرات کے ڈیٹا کی اقسام کو سرنی کی قسم سے مماثل ہونا چاہئے۔ دوسری طرف ، پوائنٹر متغیر متغیر کے پتے کو ، کسی قسم کے پوائنٹر متغیر قسم کی طرح کا ذخیرہ کرتا ہے۔
  2. ہم پوائنٹرز کی ایک صف تیار کرسکتے ہیں یعنی وہ سرنی جس کے متغیر پوائنٹر متغیر ہیں۔ دوسری طرف ، ہم ایک اشارہ بنا سکتے ہیں جو ایک صف کی طرف اشارہ کرتا ہے۔
  3. جاوا صف کی حمایت کرتا ہے ، لیکن یہ پوائنٹرز کی حمایت نہیں کرتا ہے۔
  4. ایک سرنی کا سائز متغیرات کی تعداد کا فیصلہ کرتا ہے جہاں وہ محفوظ کرسکتا ہے۔ ایک پوائنٹر متغیر صرف متغیر کا پتہ رکھ سکتا ہے

نوٹ:

جاوا پوائنٹرز کی حمایت یا سختی سے گریز نہیں کرتا ہے۔

نتیجہ:

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