c programming

Call by Value/Reference, Recursive Function with Array and String

Call By Value 

Call by Value Method में Actual Parameters की Value को Function के Formal Parameters में Copy किया जाता है| अर्थात इसमें Variable की Value का use Function Call करने में use किया जाता है| Call by Value Method में Formal Parameters के द्वारा Actual Parameter की Value को Change नहीं कर सकते है|

इसमें Actual और Formal Parameters अलग-अलग Memory Location में Store रहते हैं| Actual Parameter एक ऐसा Argument है, जिसे Function Calling में use किया जाता है| जबकि Formal Parameter एक ऐसा Argument है, जिसे Function Definition में use किया जाता है|

Example


#include<stdio.h>
#include<conio.h>

void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}

void main()
{
int x = 50, y = 70;
clrscr();
swap(x, y); // passing value to function
printf(“\nValue of x: %d”,x);
printf(“\nValue of y: %d”,y);
getch();
}

Output


Value of x: 50
Value of y: 70

Call By Reference

Call by Reference में एक Argument के Address को Formal Parameters में Copy किया जाता है| अर्थात इसमें Variable के Address को Actual Parameter की तरह Function Call में Pass किया जाता है|

इसमें अगर हम Formal Parameter की Value को Change करते है, तो Actual Parameter की Value भी Change हो जाएगी| Call by Reference में दोनों Actual और Formal Parameters एक ही Memory Location में Store रहते हैं|

Example


#include<stdio.h>
#include<conio.h>

void swap(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}

void main()
{
int x = 50, y = 70;
clrscr();
swap(&x, &y); // passing value to function
printf(“\nValue of x: %d”,x);
printf(“\nValue of y: %d”,y);
getch();
}

Output


Value of x: 70
Value of y: 50

Recursive Function

Same Function को उसी Function के अंदर Call करने को ही Recursive Function कहते हैं, और इस Process को Recursion कहते हैं। Recursive Functions का use Tree Structure (Read या Tree Structure बनाने में ) में सबसे ज्यादा होता है, जहां पर पहले से निर्धारित नहीं होता की Node का कोई Children है, या नहीं।

Data Sorting के लिए भी Recursive Function use कर सकते हैं। File Directories को Read करने के लिए Recursive Function का use किया जाता है, क्योंकि पहले से निर्धारित नहीं होता है, कि एक Directory के अंदर सभी Files ही है, फिर उसके अंदर Sub-Directories और फिर उसके अंदर Files Stored है|

Example


#include <stdio.h>
// define recursive function.
void print_number(int number)
{
// print number.
printf(“%i ,”, number);
// increment by 1.
number++;
// if number is less than 100 then call the function.
if(number <= 100)
{
// call the same function.
print_number(number);
}
}

// main function.
int main() {
print_number(1);
return 0;
}

Output


1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100

Function with Array

जिस प्रकार एक Function में किसी Simple Variable का Value Argument Pass करते हैं, उसी तरह से एक Array को भी किसी Function में Argument के रूप में Pass कर सकते हैं। Argument के रूप में Array का Name व Array की Size Actual Argument के रूप में User Defined Function को Pass की जाती है।

जब किसी User Defined Function में Array का Value GET करके उस पर Process करना होता है, तब User Defined Function में Array का नाम व Array की Size Pass करते हैं। इसलिए User Defined Function को निम्नलिखित Format में Define करना होता है।

First way:


return_type function(type arrayname[])

Second way:


return_type function(type arrayname[SIZE])

Third way:


return_type function(type *arrayname)

Example


#include<stdio.h>

int minarray(int arr[],int size){

int min=arr[0];

int i=0;

for(i=1;i<size;i++){

if(min>arr[i]){

min=arr[i];

}

}//end of for  

return min;

}//end of function  

int main(){

int i=0,min=0;

int numbers[]={4,5,7,3,8,9};//declaration of array  

min=minarray(numbers,6);//passing array with size  

printf(“minimum number is %d \n”,min);

return 0;

}

Output


minimum number is 3

Function with string

String को Modify करने और अपनी Requirement के अनुसार उन पर कई Operation करने की आवश्यकता होती है। यदि String की Length Calculate करने के लिए Loop का use किया जा सकता हैं, लेकिन Complex Problem को Solve के लिए यह अच्छा तरीका नहीं है। इसलिए Code को Proficient और Effective बनाने के लिए String Function का use किया जाता है, क्योंकि वे Pre-Written होते हैं| ताकि हम उन्हें Direct Implment कर सकें।

String handling function को Header file string.h में Define किया गया है। वे Functions निम्नलिखित हैं-

No. Function Description
1) strlen(string_name) returns the length of the string name.
2) strcpy(destination, source) copies the contents of the source string to the destination string.
3) strcat(first_string, second_string) concats or joins the first string with the second string. The result of the string is stored in the first string.
4) strcmp(first_string, second_string) compares the first string with the second string. If both strings are the same, it returns 0.
5) strrev(string) returns reverse string.
6) strlwr(string) returns string characters in lowercase.
7) strupr(string) returns string characters in uppercase.

#include <stdio.h>

int stringLength(char str[]) {
int length = 0;
while (str[length] != ‘\0’) {
length++;
}
return length;
}

int main() {
char myString[] = “Hello, World!”;
printf(“Length of the string: %d\n”, stringLength(myString));
return 0;
}

Tags: No tags

Add a Comment

Your email address will not be published. Required fields are marked *