Limitation of Call By Value in Hindi
/ BCA / Programming with C and CPP
Call By Value in C - Limitation and Comparison with Call By Reference
Limitation of Call By Value in Hindi
Call By Value क्या होता है?
Call By Value एक ऐसा तरीका है जिसमें जब हम किसी function को कोई value पास करते हैं, तो उस value की एक कॉपी (copy) function के अंदर भेजी जाती है। इसका मतलब यह है कि function के अंदर जो भी changes किए जाते हैं, वो केवल उस कॉपी पर होते हैं, original value पर नहीं।
Call By Value की प्रक्रिया को समझिए:
- एक function को argument भेजा जाता है।
- उस argument की एक copy function को दी जाती है।
- function के अंदर जो changes होते हैं, वो केवल उस copy पर होते हैं।
- original variable पर कोई भी असर नहीं पड़ता।
Call By Value की सीमाएं (Limitations of Call By Value):
- Original variable में कोई बदलाव नहीं हो सकता क्योंकि function केवल उसकी copy पर काम करता है।
- Memory की अतिरिक्त खपत होती है क्योंकि copy बनाने में extra memory का उपयोग होता है।
- अगर हम बड़े size की data structures (जैसे arrays या structures) पास करें, तो बार-बार copy करना performance को slow कर सकता है।
- हर बार नए memory space का उपयोग होता है जिससे efficiency कम हो सकती है।
Beginner के लिए एक सरल उदाहरण:
#include <stdio.h>
void changeValue(int x) {
x = x + 10;
printf("Function के अंदर x = %d\n", x);
}
int main() {
int a = 5;
changeValue(a);
printf("Main function के अंदर a = %d\n", a);
return 0;
}
इस program में जब हम changeValue() function को a पास करते हैं, तब a की एक copy x के रूप में function को मिलती है। x पर जो भी change होता है, उसका a पर कोई असर नहीं होता। इसलिए main function के अंदर a की value 5 ही रहती है।
Comparison of Call By Value and Call By Reference in Hindi
Call By Value और Call By Reference के बीच अंतर (Difference):
| विशेषता | Call By Value | Call By Reference |
|---|---|---|
| डाटा पास करने का तरीका | Value की copy पास होती है | Variable का address पास होता है |
| Original data पर असर | कोई असर नहीं होता | Original data बदल सकता है |
| Memory उपयोग | ज्यादा (copy बनाने के कारण) | कम (address पास करने के कारण) |
| Security | ज्यादा secure (original data safe रहता है) | कम secure (original data बदल सकता है) |
| Performance | कम (copy बनती है) | बेहतर (address पास होता है) |
समझने के लिए सरल भाषा में:
- Call By Value में हम एक photo की कॉपी भेजते हैं, असली फोटो नहीं।
- Call By Reference में हम photo का पता (address) भेजते हैं, ताकि receiver उसी photo को देख सके और change भी कर सके।
एक उदाहरण से तुलना:
// Call By Value
#include <stdio.h>
void update(int x) {
x = x * 2;
}
int main() {
int a = 10;
update(a);
printf("Call By Value में a = %d\n", a);
return 0;
}
Output: Call By Value में a = 10
// Call By Reference
#include <stdio.h>
void update(int *x) {
*x = *x * 2;
}
int main() {
int a = 10;
update(&a);
printf("Call By Reference में a = %d\n", a);
return 0;
}
Output: Call By Reference में a = 20
ऊपर दिए गए दोनों program एक जैसे ही दिखते हैं लेकिन पहला Call By Value है, जिसमें variable की copy भेजी जाती है, इसलिए कोई change नहीं होता। दूसरा Call By Reference है, जिसमें address भेजा जाता है, जिससे original variable बदल जाता है।
Code Example of Call By Value Function in Hindi
Call By Value का सिंपल कोड उदाहरण:
#include <stdio.h>
void square(int num) {
num = num * num;
printf("Function के अंदर square = %d\n", num);
}
int main() {
int a = 4;
square(a);
printf("Main function के अंदर a = %d\n", a);
return 0;
}
इस program में a की value 4 है। जब हम square() function को a भेजते हैं, तो उसकी copy function को मिलती है। num के अंदर 4 होता है जिसे square करके 16 किया जाता है लेकिन वो सिर्फ function के अंदर ही रहता है। बाहर a की value वही रहती है - 4।
Call By Value में Function का Behavior:
- function को value भेजने पर उसकी copy बनती है।
- function में की गई calculations उस copy पर होती हैं।
- function से बाहर आने के बाद original value वैसी की वैसी रहती है।
- यह method सुरक्षित (safe) होता है क्योंकि original data को कोई नुकसान नहीं होता।
Call By Value कब उपयोग करें?
- जब हमें केवल value का उपयोग करना हो और original variable को सुरक्षित रखना हो।
- जब हम temporary calculation करना चाहते हैं और original data को modify नहीं करना चाहते।
- Simple data types (जैसे int, float, char) के साथ छोटे calculations में यह आसान होता है।
Beginner के लिए Key Points:
- Call By Value में function को जो value भेजी जाती है, उसका असर original variable पर नहीं होता।
- function में भेजी गई value की एक नई copy पर operations होते हैं।
- अगर original variable को change करना हो, तो Call By Reference का उपयोग करें।
- यह method beginners के लिए safe और easy होता है।