سی پروگرامنگ میں ٹائپائڈ ڈھانچے اور ڈھانچے میں کیا فرق ہے؟


جواب 1:

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

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

مثال :

ٹائپف نے بغیر دستخط کیے ہوئے کتے؛
کتے = 10؛

کیس 1: ٹائپایڈف کا استعمال کیے بغیر ساخت کی تعریف

# شامل کریں 

ڈرائیو موٹر سائیکل {
    چار موٹر سائیکل [20]؛
    فلوٹ قیمت؛
}؛

انٹ مین مین () {
    سٹرک موٹر سائیکل b1؛ // ڈھانچے متغیر کا اعلان
    پرنٹف ("موٹر سائیکل کا نام درج کریں:")؛
    اسکینف ("٪ [^ \ n] s"، b1.bike)؛
    پرنٹف ("قیمت درج کریں:")؛
    اسکینف ("٪ f"، & b1.price)؛
    پرنٹف ("\ n موٹر سائیکل کا نام:٪ s" ، b1.bike)؛
    printf ("\ n قیمت:٪ .2f"، b1.price)؛
    واپسی 0؛
}

کیس 2: ٹائپایڈف کے استعمال سے ساخت کی تعریف

# شامل کریں 

ٹائپڈف سٹرک موٹر سائیکل {
    چار موٹر سائیکل [20]؛
    فلوٹ قیمت؛
} موٹر سائیکل؛

انٹ مین مین () {
    موٹر سائیکل b1؛ // ڈھانچے متغیر کا اعلان
    پرنٹف ("موٹر سائیکل کا نام درج کریں:")؛
    اسکینف ("٪ [^ \ n] s"، b1.bike)؛
    پرنٹف ("قیمت درج کریں:")؛
    اسکینف ("٪ f"، & b1.price)؛
    پرنٹف ("\ n موٹر سائیکل کا نام:٪ s" ، b1.bike)؛
    printf ("\ n قیمت:٪ .2f"، b1.price)؛
    واپسی 0؛
}

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

امید ہے کہ آپ کے شکوک و شبہات دور ہوگئے ہیں..چیر ساتھی!


جواب 2:
سی پروگرامنگ میں ٹائپائڈ ڈھانچے اور ڈھانچے میں کیا فرق ہے؟

ٹائپف اور سٹرک دو الگ خصوصیات ہیں۔ یہ صرف اتنا ہوتا ہے کہ آپ انھیں ایک اعلامیہ میں جمع کرسکتے ہیں۔

ڈھانچہ ممبروں کی فہرست پر مشتمل ایک نئی ڈھانچہ کی قسم کی وضاحت کرتا ہے:

ڈھانچہ نقطہ {
    انٹ ایکس؛
    انٹ y؛
}؛

اس سے ایک نئی قسم کی ساخت نقطہ کی وضاحت ہوتی ہے۔

ٹائپف کوئی نئی قسم نہیں تخلیق کرتا ہے۔ بلکہ یہ کسی موجودہ قسم کا نیا نام پیدا کرتا ہے۔

ٹائپف INT my_int؛
/ * انٹ اور میری_نٹ ایک ہی قسم کے نام ہیں * /

ٹائفف کے ساتھ کسی ساخت کی تعریف کو یکجا کرنا عام ہے ، اس طرح:

ٹائپڈف سٹرک پوائنٹ {
    انٹ ایکس؛
    انٹ y؛
} نقطہ؛

اس کا "سٹرک پوائنٹ {…}" حصہ ایک نئی قسم کا ڈھانچہ نقطہ تیار کرتا ہے۔ اس کو "ٹائپائڈف… پوائنٹ" سے لپیٹ کر موجودہ ٹائپ اسٹریک پوائنٹ کے لئے ایک نیا نام نقطہ تشکیل دیتا ہے۔

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

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

یقینا all تمام سی پروگرامر اس نکتے پر میری رائے شیئر نہیں کرتے ہیں ، اور اس قسم کا نام تیار کرنے کے لئے ٹائپف کو استعمال کرنے کو ترجیح دیتے ہیں جو واحد شناخت کنندہ ہے۔ آپ کو کسی بھی انداز میں لکھا ہوا کوڈ پڑھنے کے قابل ہونا پڑے گا۔

(سی ++ میں ، اس قسم کا ٹائپائڈف ضروری نہیں ہے ، چونکہ ٹائک اسٹریٹ پوائنٹ کو یا تو سٹرک پوائنٹ یا نقطہ کے طور پر بھیجا جاسکتا ہے۔)


جواب 3:

سی زبان کے معیاری شناخت کاروں کی مختلف اقسام کے لئے علیحدہ نام کی جگہیں ترتیب دیتا ہے ، جس میں ٹیگ شناخت کار (سنٹرک / یونین / اینوم کے لئے) اور عام شناخت دہندگان (ٹائپف اور دیگر شناخت کاروں کے لئے) شامل ہیں۔

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

نحو: ٹائپف (ٹائپف <مجوزہ_ نام>) ()

اسی طرح جب اس کا ڈھانچہ آتا ہے۔

اگر آپ نے ابھی کہا:

سٹرک فو {...}؛
فو x؛

آپ کو ایک مرتب غلطی ہوگی ، کیونکہ فو صرف ٹیگ کے نام کی جگہ میں ہی تعریف کی گئی ہے۔

آپ کو اس کا اعلان اس طرح کرنا پڑے گا:

سٹرک فو x؛

جب بھی آپ کسی فو کا حوالہ دینا چاہتے ہو ، آپ کو اسے ہمیشہ اسٹرو فو کہنا ہوگا۔ یہ پریشان کن تیز ہوجاتا ہے ، لہذا آپ ٹائپف کو شامل کرسکتے ہیں:

سٹرک فو {...}؛
ٹائپڈف سٹرک فو فوو؛

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

تعمیر:

ٹائپیڈف سٹرک فو {...} فو؛

اعلامیہ اور ٹائپف کے لئے محض ایک مخفف ہے۔

آخر میں ،

ٹائپف سٹرک {...} فو؛

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

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

امید ہے کہ اس سے آپ کی مدد ہوگی۔