Pass Array to Function in C Programming in Hindi

C programming language के इस हिंदी tutorial में हम सीखेंगे की कैसे function call करते वक्त one dimensional array और multidimensional array को function arguments के तौर पर pass कर सकते हो.

जैसे हम function call करते वक्त variables को arguments के तौर पर pass कर सकते हैं ठीक ऐसे ही आप arrays को भी function arguments के तौर पर function को pass कर सकते हो.

इस tutorial में हम सबसे पहले array elements को एक-एक करके function argument में pass करना सीखेंगे और फिर उसके बाद complete array एक साथ function argument में pass करना सीखेंगे.

इस tutorial को और इसमें दिए सभी C Programs को समझने के लिए आपको पहले नीचे दिए गये C programming topics की knowledge होना जरूरी है.

इसलिए यदि आपने हमारे इन tutorials को नहीं पढ़ा है तो links पर click करके पहले उन्हें जरूर पढ़ लें.

Passing Array Elements as Function Arguments in C

कभी-कभी हमें अपने C programs में array के सभी elements को एक-एक करके किसी function में किसी process के लिए argument के तौर पर pass करना पड़ता है.

जैसे हमने नीचे दिए गए example program में सभी array elements को एक-एक करके argument के तौर पर function को pass किया है और फिर उस function में ये check और print किया है की वो array element odd number है या even number.

#include<stdio.h>
void checkOE(int ele);
int main()
{
    int arr[6]={17,26,14,19,23,58};
    int i;

    for(i=0;i<6;i++)
    {
        checkOE(arr[i]);
    }

    return 0;
}

void checkOE(int ele)
{
    if(ele%2==0)
    {
        printf("Array Element %d is Even\n",ele);
    }
    else
    {
        printf("Array Element %d is Odd\n",ele);
    }
}

Output:

Array Element 17 is Odd
Array Element 26 is Even
Array Element 14 is Even
Array Element 19 is Odd
Array Element 23 is Odd
Array Element 58 is Even

Explanation:

अब क्योंकि हमें array के सभी elements को एक-एक करके यानी पहले 0th index element को फिर 1st index वाले element को और फिर इसी तरह सभी index पर मौजूद elements को function call में arguments के तौर पर pass करना था इसलिए हमने loop के अंदर से function को call किया है.

जब पहली बार हमारा checkOE() function call होगा तब variable i की value 0 होगी यानी function argument में array का 0th index पर मौजूद value pass होगी और वो value function parameter variable ele में copy हो जाएगी. 

जिसके बाद हमने variable ele को check और print कर दिया है की उसकी value even है या odd. Function call complete हो जाने के बाद program का control वापस loop के next iteration पर जाएगा.

Variable i की value में increment होगा और फिर से हमारा checkOE() function call होगा और इस बार function argument में array का 1st index पर मौजूद value pass होगी और इसी तरह से हमारा function 6 times अलग-अलग array index value के साथ call होगा.

Passing Entire Array as Function Arguments in C

जैसे ऊपर program में हमने एक-एक करके array elements को pass किया था इसी तरह आप एक ही function call में entire array को function argument के तौर पर pass कर सकते हो.

C array को function arguments के तौर पर pass करने के 2 तरीके हैं. मैंने नीचे दोनों तरीकों का syntax और example explain किया हुआ है.

Method 1: Passing array to functions in C

void checkOE(int arr[], int size);

int sum(int arr[], int n);

float mysum(float arr[], int n);

हमने ऊपर syntax में अपने use के हिसाब से function return type, function name, parameters data type और name रखा है आप अपने use के हिसाब से function defined कर सकते हो.

जब आप function calling की समय entire array को function argument के तौर पर pass करते तब उसके साथ array size भी जरूर pass किया जाता है.

इसलिए function definition में entire array को और array size को store करने के लिए parameters declared करना जरूरी होता है.

इसके अलावा function call करते वक्त जब आप entire array को pass करने के लिए आपको सिर्फ array name लिखना होता है.

Passing array to functions example program 1:

#include<stdio.h>
void checkOE(int arr[],int size);
int main()
{
    int arr[]={17,26,14,19,23,58};

    checkOE(arr,6);

    return 0;
}

void checkOE(int arr[],int size)
{
    int i;

    for(i=0;i<size;i++)
    {
        if(arr[i]%2==0)
        {
            printf("Array element %d is Even\n",arr[i]);
        }
        else
        {
            printf("Array element %d is Odd\n",arr[i]);
        }
    }
}

Output:

Array element 17 is Odd
Array element 26 is Even
Array element 14 is Even
Array element 19 is Odd
Array element 23 is Odd
Array element 58 is Even

Explanation:

ऊपर program में line 7 पर जब हमने checkOE() function को call किया है तब हमने अपने entire array को pass करने के लिए सिर्फ उसका नाम (arr) और array का size (6) pass किया है.

Passing array to functions example program 2:

#include<stdio.h>
float sum(float arr[],int n);
int main()
{
    float marks[]={80.34,75.82,91.40,65.99,85.12};

    float total=sum(marks,5);

    printf("Marks Array Total : %f",total);

    return 0;
}

float sum(float arr[],int n)
{
    int i;
    float s=0;

    for(i=0;i<n;i++)
    {
        s=s+arr[i];
    }

    return s;
}

Output:

Marks Array Total : 398.669983

Passing array to functions example program 3 (Important):

जब आप entire array को function argument में pass करते हो तब array को reference के तौर पर pass किया जाता है ना की value के तौर पर.

इसका ये मतलब होता है अगर function के अंदर array में कुछ changes होते हैं तो उसका असर आपको array के बाहर भी दिखेगा. जैसा की आप नीचे example program में देख सकते हो.

#include<stdio.h>
void myfun(int arr[],int n);
int main()
{
    int nums[]={25,45,53,77,34};
    int i;

    printf("Before Function Call Array Elements : ");
    for(i=0;i<5;i++)
    {
        printf("%d ",nums[i]);
    }

    myfun(nums,5);

    printf("\nAfter Function Call Array Elements : ");
    for(i=0;i<5;i++)
    {
        printf("%d ",nums[i]);
    }

    return 0;
}

void myfun(int arr[],int n)
{
    int i;

    for(i=0;i<n;i++)
    {
        arr[i]=arr[i]+1;
    }
}

Output:

Before Function Call Array Elements : 25 45 53 77 34
After Function Call Array Elements : 26 46 54 78 35

Explanation:

जैसा की आप ऊपर program output में देख सकते हो की function call करने से पहले जब हमने array elements को print कराया तब वही values print हुई जो हमने array को initialized की थी.

उसके बाद जब हमने line 14 पर myfun() function call किया तब हमने अपने array को या मैं कहूँ array reference को और array size को function arguments तौर पर pass किया है.

अब function के अंदर हमने array के सभी elements की values में 1 number जोड़ कर same index में assign कर दिया है यानी हमने array में changes कर दिए हैं.

अब जब function complete हो जाने के बाद program का control वापस main() function में चला जाएगा.

जहाँ पर हमने फिर से array elements को print कराया और जैसा की आप output में देख सकते हो function के अंदर जो changes किये थे उसकी वजह से array के सभी elements की values 1 number ज्यादा print हुई है.

Method 2: Passing array to functions in C

जैसा की आप जानते हैं अगर आप कहीं सिर्फ array name का use करते हैं तो उसका मतलब होता है array के 0th index वाले element का address यानी की arr और &arr[0] दोनों का मतलब एक ही होता है.

इसलिए जब आप किसी function को call करते वक्त अगर सिर्फ array name as argument pass करते हो तो उसका मतलब है की आप array के 0th element का address pass कर रहे हैं.

इसलिए अगर आप function parameter में अगर कोई pointer variable declared कर देंगे तो वो उस address को store कर लेगा और फिर आप उस pointer से array को access कर सकते हो.

Passing a complete array to a function example program:

#include<stdio.h>
void myfun(int *ptr,int n);
int main()
{
    int nums[]={25,45,53,77,34};
    int i;

    myfun(nums,5);

    return 0;
}

void myfun(int *ptr,int n)
{
    int i;

    printf("Array Elements : ");
    for(i=0;i<n;i++)
    {
        printf("%d ",*(ptr+i));
    }
}

Output:

Array Elements : 25 45 53 77 34

Passing Multidimensional Arrays to a Function in C

ऊपर हमने सभी programs में one dimensional array को function argument के तौर पर pass किया था.

अब हम multidimensional array को function call करते वक्त argument के तौर पर pass करेंगे और ये काम बहुत तरीकों से कर सकते हो. यहाँ सबसे आसान method को follow करेंगे.

Multidimensional arrays को भी function argument में pass करते वक्त सिर्फ उसका नाम लिखते है लेकिन function parameter में array size जरूर बताते हैं.

#include<stdio.h>
void myfun(int arr[2][3]);
int main()
{
    int records[2][3]={{25,45,53},{62,77,34}};
    int i;

    myfun(records);

    return 0;
}

void myfun(int arr[2][3])
{
    int i,j;

    printf("Array Elements :-\n");
    for(i=0;i<2;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}

Output:

Array Elements :-
25 45 53
62 77 34