Thursday 1 February 2018

Function in C Language

किसी भी C प्रोग्राम में कम से कम एक फंक्शन main() तो होता ही है इसके अलावा अन्य प्रोग्राम में और भी फंक्शन होते हैं । फंक्शन बना कर coding करने से कई लाभ होते हैं जैसे एक ही प्रकार के टास्क के लिए हमें बार बार कोडिंग  नहीं करनी पड़ती  बस हमें उस फंक्शन को ही हर बार कॉल करना होता है | बड़े प्रोग्राम में एरर की बहुत सम्भावना होती है पर जब हम इससे कई छोटे छोटे फंक्शन में बाँट कर लिखते हैं  तब हमारी पकड़ बहुत अच्छी होती है और गलतियों की सम्भावना बहुत काम होती है ।

Built-in Function

हमें बहुत सारे फंक्शन कि के साथ भी मिलते हैं जिन्हें हम बिल्ट इन  फंक्शन कहते हैं इनको अलग अलग केटेगरी के हिसाब से अलग अलग लाइब्रेरी फाइल में डिफाइन किया गया है जब जिस प्रकार के फंक्शन को इस्तेमाल करना होता है उस कटेगरी की हेडर फाइल को अपने कोड में include करके हम उन फंक्शन का इस्तेमाल कर सकते हैं । जैसे input और  output से सम्बंधित फंक्शन इस्तेमाल करने के लिए हमें standard input and output header file include करनी पड़ती है इसलिए हम  #include <stdio.h> लिख कर इस फाइल को अपने कोड में ऐड कर लेते हैं ।

User Defined Function

जो फंक्शन हम अपने प्रोग्राम में अपनी जरूरत के अनुसार डिफाइन करते हैं या बनाते हैं उन्हें यूजर डिफाइंड फंक्शन कहते हैं । जब हम फंक्शन डिफाइन की बात करते हैं तो हम मूल रूप से फंक्शन हेडर और फंक्शन बॉडी की बात करते हैं । यहां पर हम फंक्शन सभी भागों के बारे में बात करेंगे । जैसे  Return type , function name , parameter और  function body.

Example

int sumoftwonum(int ,int ); //function prototype

int sumoftwonum(int a,int b) { // function definition

int c=0;
c = a + b;

return c;
}

int finalsum = sumoftwonum(6,5); // function calling


function prototype – यह पार्ट सबसे ऊपर लिखा जाता है इस पार्ट से कम्पाइलर को मालूम पड़ता है कि इस नाम का फंक्शन नीचे डिफाइन किया गया है ।

function define – इस पार्ट में फंक्शन में क्या होगा इसके लिए कोडिंग की जाती है |

Explanation – इसमें sumoftwonum function name है और उसके बाद ब्रैकेट में दो बार int लिखा गया है जिसका अर्थ है की इस function में हमें दो  int value parameter या argument के रूप में भेजनी पड़ेंगी । लाइन में सबसे पहले भी int लिखा गया है इसका अर्थ है कि यह function run होने के बाद एक int value return करेगा ।


function call – इस पार्ट में फंक्शन को कॉल किया जाता है या हम ये भी कह सकते हैं की इसी स्टेटमेंट के बाद ही फंक्शन कार्य करना शुरू करता है ।

Function में दो प्रकार के Parameters होते है |

1.Formal Parameter
2.Actual Parameter

1.Formal Parameter

जो parameter function के declaration में और definition में लिखे जाते है, उसे Formal Parameter कहते है |

for eg.

void swap(int x, int y); // Formal Parameters
int main(){
int a=2; b=10
swap (a, b)
}
void swap (int x, int y){    //Formal Parameters
------------
------------
}

2.Actual Parameter

जो parameter function call में लिखे जाते है, उसे Actual Parameter कहते है |

for eg.

void swap(int x, int y);
int main(){
int a=2; b=10
swap (a, b)    //Actual Parameter
}
void swap (int x, int y){
------------
------------
}

Function Calling के दो प्रकार है |

1.Call By Value
2.Call By Reference


1. Call By Value

Call By Value में Variable के value को parameter के रूप से function को pass किया जाता है | और Actual Parameter की value Formal Parameter पर copy की जाती है  |

for eg.
void swap(int x, int y);

int main(){
   
int a = 2, b = 10;
printf("Before Swapping  a = %d and b = %d\n", a, b);
swap(a, b);
}
void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
printf("After Swapping a = %d and b = %d", x, y);
}


यहाँ पर Program में variable 'a' और 'b' function 'swap' को pass किये गए है | यहाँ पर 'a' और 'b' की values 'x' और 'y' variable पर copy की जाती है |
 
2. Call By Reference
 

Call By Reference में Variable के address को parameter के रूप से function को pass किया जाता है | और Actual Parameter की value Formal Parameter पर copy नहीं की जाती है  |


for eg.

void swap(int *x, int *y);

int main(){
   
int a = 2, b = 10;
printf("Before Swapping  a = %d and b = %d\n", a, b);
swap(&a, &b);
}
void swap(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
printf("After Swapping a = %d and b = %d", *x, *y);
}


यहाँ पर Program में variable 'a' और 'b' के address को function 'swap' को pass किया  गया है | यहाँ पर 'a' और 'b' की values 'x' और 'y' variable पर copy नहीं की जाती है |
 

Share this

0 Comment to "Function in C Language"

Post a Comment