Structure with Function

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 करेगा।

Buy this eBook to read complete discussion “Structure with Function in C

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 GET DEMO REVIEWS