جامد متغیر ، باقاعدہ متغیر ، عالمی متغیر اور ایک مستحکم متغیر میں کیا فرق ہے؟


جواب 1:

جامد متغیر

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

نحو: مستحکم قسم var_name؛

# شامل کریں باطل func_1 ()؛ int a، b = 10؛ int main () {func_1 ()؛ func_1 ()؛ func_1 ()؛ // آپریٹنگ سسٹم پر ہر چیز کا اشارہ ٹھیک ریٹرن 0 میں کام کرتا ہے؛ oid باطل فنک_1 () {انٹ a = 1؛ جامد انٹ b = 100؛ پرنٹف ("a =٪ d \ n"، a)؛ پرنٹف ("b =٪ d \ n \ n"، b)؛ a ++؛ بی ++؛ }

متوقع آؤٹ پٹ:

a = 1 b = 100 a = 1 b = 101 a = 1 b = 102

فنک_1 () میں ، متغیر بی کو مستحکم قرار دیا گیا ہے۔ جب func_1 () کو پہلی بار طلب کیا جاتا ہے B کو 100 میں شروع کیا جاتا ہے ، لائن 22 میں ، بی کی قیمت میں اضافہ ہوتا ہے۔ ب کی اس نئی قدر کو اگلی بار فنک_1 () کال کرنے پر برقرار رکھا جائے گا۔ جب فنک_1 () کو دوسری بار کہا جاتا ہے تو ، متغیر بی نے اپنی قیمت جو 101 ، لائن 20 تھی برقرار رکھی ہے ، اسے بی کی قیمت کو چھاپ کر ثابت کرتی ہے اور ایک بار پھر بی کی قدر میں 1. اضافہ ہوتا ہے ، اسی طرح ، جب تیسری بار فنک_ () کہا جاتا ہے ، بی کی قیمت 102 ہے۔ نوٹ کریں کہ صرف متغیر بی ہی اس کی قیمت کو برقرار رکھنے کے قابل ہے کیونکہ متغیر بی کو مستحکم قرار دیا گیا ہے ، تاہم ، یہ متغیر اے کے ساتھ ایسا نہیں ہوتا ہے ، جو ہر بار شروع ہوتا ہے جب فنک_1 () کہا جاتا ہے. نیز ، یہ بھی نوٹ کریں کہ جامد متغیر بی صرف ایک بار شروع کیا جاتا ہے جب پہلی بار func_1 () بلایا جاتا ہے۔

عالمی متغیرات

کسی بھی فنکشن کے باہر اعلان کردہ متغیرات کو عالمی متغیر کہا جاتا ہے۔ وہ کسی بھی فنکشن تک محدود نہیں ہیں۔ کوئی بھی تقریب عالمی متغیر تک رسائی اور اس میں ترمیم کرسکتی ہے۔ اعلان کے وقت عالمی متغیرات خود بخود 0 میں شروع ہوجاتی ہیں۔ عام طور پر اہم () فنکشن سے پہلے عالمی متغیر لکھا جاتا ہے۔

# شامل کریں باطل func_1 ()؛ باطل func_2 ()؛ int a، b = 10؛ // عالمی متغیرات کا اعلان کرنا اور شروع کرنا int main () {printf ("Global a =٪ d \ n"، a)؛ پرنٹف ("عالمی b =٪ d \ n \ n" ، b)؛ func_1 ()؛ func_2 ()؛ // آپریٹنگ سسٹم پروگرام کے لئے سگنل ٹھیک ریٹرن 0 بھاگ گیا؛ } باطل فنک_1 () {پرنٹف ("فنک_1 () سے گلوبل a =٪ d \ n"، a)؛ پرنٹف ("فنک_1 () سے گلوبل بی =٪ d \ n \ n" ، b)؛ } باطل فنک_2 () {انٹ a = 5؛ پرنٹف ("فنک 2 کے اندر () a =٪ d \ n" ، a)؛ }

متوقع آؤٹ پٹ:

گلوبل a = 0 گلوبل بی = 10 فنک سے () گلوبل a = 0 فنک_1 () سے گلوبل بی = 10 اندر فنک 3 () a = 5

لائن 4 میں ، اے اور بی کو قسم کے دو عالمی متغیر کے طور پر اعلان کیا گیا ہے۔ متغیر a کو خود بخود 0 میں شروع کردیا جائے گا۔ آپ کسی بھی فنکشن کے اندر متغیر a اور b کا استعمال کرسکتے ہیں۔ نوٹ کریں کہ فنکشن فنک 3 () کے اندر ایک مقامی متغیر ہے جس کا نام اسی عالمی نام ہے۔ جب عالمی متغیر اور مقامی متغیر کے مابین کوئی تنازعہ ہوتا ہے تو ، مقامی متغیر کو فوقیت حاصل ہوجاتی ہے ، اسی وجہ سے اندر func_2 () مقامی قیمت کو پرنٹ کیا جاتا ہے۔

مقامی متغیرات کے برعکس ، کام ختم ہوتے ہی عالمی متغیرات کو ختم نہیں کیا جاتا ہے۔ وہ کسی بھی فنکشن میں دستیاب ہوتے ہیں جب تک کہ اس پروگرام پر عمل نہ ہو۔

اتار چڑھاؤ

متغیر کو اتار چڑھاؤ کرنے کا اعلان کرنے کے ل the ، متغیر کی تعریف میں ڈیٹا کی قسم سے پہلے یا بعد میں غیر مطلوبہ الفاظ کی اتار چڑھاؤ شامل کریں۔ مثال کے طور پر یہ دونوں اعلانات فو کو غیرجانبدار عددی ہونے کا اعلان کریں گے۔

اتار چڑھاؤ INT اتار چڑھاؤ foo؛

اب ، یہ پتہ چلا ہے کہ مستحکم متغیرات کی طرف اشارہ کرنے والے بہت عام ہیں ، خاص طور پر میموری میپڈ I / O اندراجات کے ساتھ۔ یہ دونوں اعلانات پیراگ کو ایک غیر مستحکم دستخط شدہ 8 بٹ عدد کی نشاندہی کرنے کا اعلان کرتے ہیں۔

اتار چڑھاؤ uint8_t * pReg؛ uint8_t اتار چڑھاؤ * pReg؛

غیر مستحکم اعداد و شمار کی طرف اتار چڑھاؤ کرنے والے اشارے بہت کم ہوتے ہیں (مجھے لگتا ہے کہ میں نے انہیں ایک بار استعمال کیا ہے) ، لیکن میں آگے بڑھ کر آپ کو نحو دیتا ہوں:

INT * اتار چڑھاؤ p؛

اور صرف مکمل ہونے کے ل if ، اگر واقعی میں آپ کے پاس مستحکم متغیر کی طرف مستحکم پوائنٹر ہونا ضروری ہے تو ، آپ لکھتے ہیں:

INT اتار چڑھاؤ * اتار چڑھاؤ پی؛

اتفاقی طور پر ، اس بات کی ایک بڑی وضاحت کے لئے کہ آپ کے پاس انتخاب کیوں ہے کہ وہ اتار چڑھاؤ کہاں رکھیں اور آپ کو ڈیٹا ٹائپ کے بعد کیوں رکھنا چاہئے (مثال کے طور پر ، "اتار چڑھاؤ * فو) ، ڈین ساک کا کالم" فنکشن میں ٹاپ لیول سی وی کوالیفائر "پڑھیں پیرامیٹرز "(ایمبیڈڈ سسٹم پروگرامنگ ، فروری 2000 ، صفحہ 63)

آخر میں ، اگر آپ کسی ڈھانچے یا یونین پر اتار چڑھاؤ لگاتے ہیں تو ، ڈھانچے / یونین کے پورے مضامین اتار چڑھاؤ ہیں۔ اگر آپ یہ سلوک نہیں چاہتے ہیں تو ، آپ ڈھانچے / یونین کے انفرادی ممبروں پر اتار چڑھاؤ کوالیفائر لگاسکتے ہیں۔

شکریہ..:)


جواب 2:

A2A کا شکریہ۔

متغیر: محل وقوع کو دیئے گئے نام کے سوا کچھ نہیں جو ہماری قدر کو برقرار رکھ سکے۔

  1. جامد متغیر: متغیر جو اس کی گنجائش سے باہر ہونے کے بعد بھی اس کی قدر کو محفوظ رکھتا ہے۔ ایک بار ابتداء ، دوبارہ ابتداء نہیں۔ باقاعدہ متغیر: باقاعدہ یا مقامی متغیر۔ اس کا دائرہ صرف ایک فنکشن تک ہی محدود ہے یا صرف اس تقریب میں استعمال کیا جاسکتا ہے جہاں اس کا اعلان کیا جاتا ہے۔ عالمی متغیر: عالمی متغیر متغیر ہے جو تمام افعال سے باہر قرار دیا جاتا ہے۔ اس کا دائرہ پورے پروگرام میں ہے۔ اس کی قدر کو دوسرے تمام افعال سے بازیافت کیا جاسکتا ہے۔ غیر متغیر متغیر: ان کی قیمت کسی بھی وقت موجودہ کوڈ کے دائرے سے باہر کوڈ کے ذریعہ بدلی جاسکتی ہے۔ اتار چڑھاو key الفاظ کا مقصد مرتب کرنے والے کو کسی بھی اصلاح سے روکنا ہے۔