https://www.rakeshmgs.in/search/label/Template
https://www.rakeshmgs.in

Hindi Notes

RakeshMgs

Pointers as Function Argument in C Programming Hindi Notes

शनिवार, मार्च 20, 2021

Pointers as Function Argument

एक फ़ंक्शन पैरामीटर के रूप में पॉइंटर का उपयोग फ़ंक्शन कॉल के दौरान पारित arguments के address को रखने के लिए किया जाता है। इसे call by reference भी कहा जाता है। जब किसी फ़ंक्शन को reference द्वारा बुलाया जाता है, तो reference variable में किए गए कोई भी परिवर्तन original variable को effect करेगा।

Example Time: Swapping two numbers using Pointer

	
	
#include <stdio.h> void swap(int *a, int *b); int main() { int m = 10, n = 20; printf("m = %d\n", m); printf("n = %d\n\n", n); //passing address of m and n to the swap function swap(&m, &n); printf("After Swapping:\n\n"); printf("m = %d\n",m); printf("n = %d\n",n); return 0; } /* pointer 'a' and 'b' holds and points to the address of 'm' and 'n' */ void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; }

output

m = 10
n = 20
After Swapping:
m = 20
n = 10

Functions returning Pointer variables

फ़ंक्शन के local variable फ़ंक्शन के बाहर नहीं रहते हैं। उनके पास केवल फ़ंक्शन के अंदर गुंजाइश है। इसलिए यदि आप एक local variable से जुड़े एक pointer को लौटाते हैं, तो फ़ंक्शन समाप्त होने पर pointer to nothing होने का संकेत देगा।

	
	
#include <stdio.h> int* larger(int*, int*); void main() { int a = 15; int b = 92; int *p; p = larger(&a, &b); printf("%d is larger", *p); } int* larger(int *x, int *y) { if (*x > *y) return x; else return y; }

output

92 is larger

Safe ways to return a valid Pointer.

1. या तो function के साथ argument का उपयोग करें। क्योंकि फ़ंक्शन के लिए दिए गए argument कॉलिंग फ़ंक्शन के अंदर घोषित किए जाते हैं, इसलिए वे फ़ंक्शन के बाहर भी रहेंगे।

2. फ़ंक्शन के अंदर static local variables का उपयोग करें और उन्हें वापस करें। चूंकि static variable का lifetime main() फ़ंक्शन से बाहर निकलने तक होता है, इसलिए वे पूरे program में उपलब्ध रहेंगे।

Pointer to functions

किसी फ़ंक्शन को pointing करने वाले pointer को घोषित करना संभव है, जिसे तब किसी अन्य फ़ंक्शन में एक argument के रूप में उपयोग किया जा सकता है। किसी फ़ंक्शन का पॉइंटर निम्नानुसार घोषित किया जाता है,

	
	
type (*pointer-name)(parameter);

Here is an example :

	
	
int (*sum)(); //legal declaration of pointer to function int *sum(); //This is not a declaration of pointer to function

एक फ़ंक्शन पॉइंटर एक विशिष्ट फ़ंक्शन को इंगित कर सकता है जब उसे उस फ़ंक्शन का नाम assigned किया जाता है।

	
	
int sum(int, int); int (*s)(int, int); s = sum;
	
	
s (10, 20);

Example of Pointer to Function

	
	
#include <stdio.h> int sum(int x, int y) { return x+y; } int main( ) { int (*fp)(int, int); fp = sum; int s = fp(10, 15); printf( "Sum is %d", s); return 0; }

output

25

Complicated Function Pointer example

आपको आसपास बहुत सारे जटिल फ़ंक्शन पॉइंटर उदाहरण मिलेंगे, आइए एक ऐसा उदाहरण देखें और इसे समझने की कोशिश करें।

	
	
void *(*foo) (int*);

यह जटिल प्रतीत होता है लेकिन यह बहुत सरल है। इस मामले में (*foo) फ़ंक्शन के लिए एक pointer है, जिसका argument int* प्रकार का है और रिटर्न प्रकार void* है।