Structure with Function

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

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW DOWNLOAD READ ONLINE

Structure with Function: अन्‍य Variables की तरह एक Structure Variable को भी Arguments के रूप में किसी Function को भेजा जा सकता है। किसी Function में जब Structure प्रकार के Variable को भेजना होता है तब हमें ये ध्‍यान रखना होता है कि Function कोई मान Return करेगा या नहीं और यदि Function कोई मान Return करेगा तो वह मान किस Data Type का होगा।

यदि हम Structure प्रकार के Data Type का मान किसी Function द्वारा Return कराना चाहते हैं, तो उस Function को भी हमें Structure प्रकार का Declare करना जरूरी होता है। लेकिन जब हमें किसी प्रकार का कोई मान Calling Function को Return नहीं करवाना होता है या फिर मात्र Standard प्रकार के Data Type जैसे int, float, Double या char प्रकार का ही Data Calling Function को Return करवाना होता है, तब हमें Function को Structure प्रकार का Declare करना जरूरी नहीं होता है।

एक सबसे खास बात ये है कि जब हमें किसी प्रोग्राम में, Structure प्रकार के Variable को, किसी Function में pass करना होता है, तो Structure को main() Program से बाहर ही Define किया जाना जरूरी होता है। क्योंकि यदि Structure main() Function के अंदर Define किया जाता है तो उस Structure को बाहर का Function उपयोग में नहीं ले सकता है, क्योंकि कोई भी User Defined Function हमेंशा main() Program से बाहर ही लिखा जाता है।

जैसा कि Storage Class के अंतर्गत बताया गया था कि केवल Global Variable को ही कोई भी Function उपयोग में ले सकता है। main() Function या किसी अन्‍य User Defined Function में Declare किये गए Variables को सामान्‍य तरीके से कोई भी अन्‍य User Defined Function उपयोग में नहीं ले सकता। उसी प्रकार किसी भी Global Structure को ही कोई भी अन्‍य User Defined Function अपने उपयोग में ले सकता है।

हम अपनी आवश्‍यकता के अनुसार प्रोग्राम की जो भी coding main Program से बाहर लिखते हैं, वे सब codes चाहे वह कोई Variable के Declaration के लिए हो, किसी Function को लिखा गया हो या फिर चाहे वह Structure का Definition हो, वे सारी Coding Global हो जाती हैं।

इस प्रकार से Function में Structure प्रकार के Variable को Argument के रूप में तभी भेज कर उपयोग में लाया जा सकता है, जब Structure Global प्रकार से define किया गया हो यानी Structure को main() Program से बाहर लिखा गया हो।

इसे निम्न प्रोग्राम द्वारा समझने की कोशिश करते हैं। इस प्रोग्राम में एक Global प्रकार का Structure define किया गया है और इस inv नाम के इस Structure का एक item नाम का Variable main() Program में Declare किया गया है। इस Structure प्रकार के Variable item  में हम किसी सामान का Item Code, सामान की संख्‍या व सामान की कीमत Store कर सकते हैं।

// Program
	#include<stdio.h>

	struct inv
	{
		int item, qty, price;
	};

	main()
	{
		int x;
		struct inv item;
		clrscr();

		printf("\n Enter Item code ");
		scanf("%d", &item.item );

		printf("\n Enter Quantity ");
		scanf("%d", &item.qty );

		printf("\n Enter Price ");
		scanf("%d", &item.price );

		x= value(item);

		printf("\n Price is %d ",x);

		getch();
	}

	value(cal)
	struct inv cal;
	{
		int val;
		val = cal.qty * cal.price;
		return(val);
	}

इस प्रोग्राम को Run करने पर Program Control User से सामान का कोड, सामान की मात्रा व सामान की कीमत Input के रूप में लेता है और item नाम के Variable के Structure की Memory Location पर Store कर देता है।

फिर Program Control को value नाम का एक User Defined Function मिलता है। Program Control Argument के रूप में इस Function में Structure प्रकार के Data Type के Variable item को Pass कर देता है। अब Program Control value नाम के इस User Defined Function में आता है। यहां कोष्‍ठक में formal Argument के रूप में प्राप्त Structure inv प्रकार के Variable item का मान cal नाम के Variable को प्राप्त हो जाता है।

अगले Statement में cal को Structure inv प्रकार का Variable Declare कर दिया गया है। ये सभी काम उसी प्रकार किये जा रहे हैं जैसा कि अन्‍य Function में किया जाता है। यानी यदि हम int प्रकार का मान User Defined Function को Argument के रूप में Pass करते हैं, तो formal Argument के रूप में वह मान जब User Defined Function के कोष्‍ठक में लिखे Variable को प्राप्त हो जाता है, तब उस Variable को int प्रकार का Declare किया जाता है।

उसी प्रकार यहां Structure inv प्रकार का मान formal Argument के रूप में User Defined Function value के कोष्‍ठक में लिखे Variable cal को प्राप्त हो रहा है और फिर इस cal नाम के Variable को Structure प्रकार का Declare किया गया है।

जिस प्रकार से हम item नाम के Structure inv प्रकार के Variable को main() Program मे access करते हैं, उसी प्रकार से अब हम item के स्थान पर cal नाम के Variable को प्रयोग में ले सकते हैं क्योंकि cal नाम का ये Variable item नाम के Variable की ही प्रतिलिपी है। यानी इस प्रतिलिपी पर हम कोई भी काम उसी प्रकार से कर सकते हैं, जिस प्रकार से किसी int प्रकार के formal Variable के साथ हम सामान्‍य Function में प्रक्रिया करते हैं।

इस User Defined Function value में val नाम का एक Local Variable Declare किया गया है। अब कुल खर्च हुए रूपयों की गणना करने के लिए val = cal.qty * cal.price; Statement लिखा गया है। ये Statement val नाम के Variable में सामान की मात्रा का सामान की कीमत से गुणा करके प्राप्त मान को val नाम के Variable में Store कर देता है।

यदि हमें Function का प्रयोग ना करना होता और सभी सामान के क्र; में खर्च होने वाली रकम को ज्ञात करना होता, तो main() Program में ही इस Statement का प्रारूप कुछ इस प्रकार होता:

    val = item.qty * item.price;

चूंकि इस Function में item के साथ की जाने वाली सारी प्रक्रियाएं अब हमें cal नाम के Variable के साथ करनी है क्योंकि Actual Argument के रूप में item Variable का सारा मान Formal Argument के रूप में User Defined Function के कोष्‍ठक में लिखे Variable cal को प्राप्त हो गया है। इसलिए ये Statement val = cal.qty * cal.price; उपयोग में लिया गया है। यहां val एक int प्रकार का Variable है और val को main() Function में Return किया गया है।

जब Program Control main() Function में Return होता है, तब val का मान main() Function में Declare Variable x को प्राप्त हो जाता है और main() Function में x का मान print करवा दिया जाता है। जब किसी प्रोग्राम में किसी Function से Structure प्रकार का मान Calling Function को Return करना होता है तब हमें प्रोग्राम में उस Function को Structure प्रकार का Declare करना पडता है। इसे समझने के लिए नीचे लिखे प्रोग्राम को Discus करते हैं।

// Program
	#include<stdio.h>
	struct stud
	{
		char name[15];
		int ro_no, sub1, sub2, sub3, tot;
	};

	main()
	{
		struct stud stud1,sum();
		clrscr();

		printf("\n Enter name of stud1 ");
		scanf("%s", stud1.name);

		printf("\n Enter roll number of stud1 ");
		scanf("%d",&stud1.ro_no);

		printf("\n Enter Marks of sub1 ");
		scanf("%d",&stud1.sub1);

		printf("\n Enter Marks of sub2 ");
		scanf("%d",&stud1.sub2);

		printf("\n Enter Marks of sub3 ");
		scanf("%d",&stud1.sub3);

		stud1=sum(stud1);

		clrscr();

		printf("\n Name  of Student1 is %s ", stud1.name);
		printf("\n Ro No of Student1 is %d ", stud1.ro_no);
		printf("\n Marks of Subject1 is %d ", stud1.sub1);
		printf("\n Marks of Subject2 is %d ", stud1.sub2);
		printf("\n Marks of Subject3 is %d ", stud1.sub3);
		printf("\n Total Marks is %d",stud1.tot);

		getch();
	}

	struct stud sum(stvar) // Function Declaration
	struct stud stvar ;
	{
		stvar.tot=stvar.sub1+stvar.sub2+stvar.sub3;
		return( stvar );
	}

इस प्रोग्राम में सर्वप्रथम एक stud नाम का एक Structure बनाया गया है। फिर main() Program में इस stud नाम के दो Variables Declare किये गए हैं। पहला Variable stud1 है जो कि Structure प्रकार का एक सामान्‍य Variable है, जबकि दूसरा Variable sum() एक Function है। इस Function को यहां Declare करने का मतलब ये है कि ये Function Structure stud प्रकार के Data Type का मान main() Program से Receive करेगा और main() Program को Structure stud प्रकार के Data Type का मान Return करेगा।

इस प्रोग्राम को Execute करके Student का नाम रोल नम्बर व तीन विषयों के अंक Store करने के बाद Program Control को stud1=sum(stud1); Statement प्राप्त होता है। इस Statement से Program Control Structure stud प्रकार के Variable stu1 का मान sum() Function को Actual Argument के रूप में भेज देता है। sum() Function में Formal Argument को Accept करने के लिए एक formal Variable stvar है।

stud1 का मान stvar को प्राप्त होने के बाद इस Variable को Structure stud प्रकार का Declare किया गया है। अब stvar stud1 Variable के प्रतिनिधि के रूप में काम करेगा यानी जो भी Calculations stud1 पर main() Program में की जा सकती है, वे सभी Calculations इस Function में stvar पर की जा सकती है और stvar के अंदर जो मान है वह stud1 Variable का है।

अब तीनों विषयों में प्राप्त अंकों का मान stvar.tot=stvar.sub1+stvar.sub2+stvar.sub3; Statement द्वारा जोड कर stvar नाम के इस Structure प्रकार के Variable में Store कर दिया गया है और stvar के मान को, जो कि Structure प्रकार का मान है, main() Function को Return कर दिया गया है।

इस Function से हम Structure प्रकार का मान Calling Function को Return कर रहें हैं इसलिए Return Data Type के स्थान पर हमने struct stud लिखा हैं। ये Statement Program Control को बताता है कि इस Function से return होने वाला मान stud नाम के Structure प्रकार का है।

जब return Statement द्वारा stvar मे Store मान को main() Function में भेजा जाता है, तब यह मान वापस stud1 नाम के Variable को प्राप्त हो जाता है। यानी stud1 Variable के Structure में tot Member में तीनों विषयों में प्राप्त अंकों का योग Store हो जाता है। Structure के Member tot को मान हमने sum Function द्वारा Calculate करके प्रदान किया है।

इस प्रकार हम इस प्रोग्राम से समझ सकते हैं कि जब एक Structure प्रकार के Variable को किसी Function में भेजा जाता है, तो वास्तव में हम पूरा Structure ही Function को Pass कर रहे होते हैं और जो भी प्रक्रिया हम Declare किये गए नए  formal Variable द्वारा करते हैं, वे सारे काम सीधे ही Structure के अंदर होते हैं।

जैसा कि इस प्रोग्राम में हमने tot Member को मान Function में Declare किये गए formal Variable stvar द्वारा प्रदान किया है। stvar में stud1 के सभी Members को प्रदान किया गया मान Function को प्राप्त हुआ है।

इस बात को थोडा ध्‍यान से समझें कि एक Structure प्रकार का Variable सामान्‍य Variable से अलग होता है, क्योंकि एक सामान्‍य Variable में केवल एक ही मान होता है, लेकिन एक Structure प्रकार के Variable में उतने मान होते हैं, जितने Define किये गए Structure के Member होते हैं। इस प्रकार से stud1 से छ% मान User Defined Function sum को प्राप्त होते हैं।

पहला name का, दूसरा roll number का तीसरा sub1 का चौथा sub2 का व पांचवा sub3 का व छठा tot का। चूंकि tot में कोई मान हमने Store नहीं किया है इसलिए ये खाली ही रहता है। इस Program में हम देख सकते हैं कि stvar को भी ये ही छ: मान formal Argument के रूप में प्राप्त हुए हैं।

ये छ% मान वे ही हैं जो कि Structure में हमने Member बनाए हैं। यानी एक Function को जब Structure प्रकार का Variable Argument के रूप में Pass किया जाता है तो वास्तव में हम पूरा Structure ही उस Function को Argument के रूप मे pass कर रहे होते हैं। और उस Structure को use करने के लिए एक Variable की जरूरत होती है। ये Variable Function का formal Variable होता है जो यहां stvar है।

Nested Structure - Structure within Structure
Difference between Structure and Union

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

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW DOWNLOAD READ ONLINE

Download All Hindi EBooks

सभी हिन्दी EBooks C, C++, Java, C#, ASP.NET, Oracle, Data Structure, VB6, PHP, HTML5, JavaScript, jQuery, WordPress, etc... के DOWNLOAD LINKS प्राप्‍त करें, अपने EMail पर।

Register करके Login करें। इस Popup से छुटकारा पाएें।