मैंने देखा है कि फ़ंक्शन पैरामीटर "int arr []" या "int * arr" है, तो सरणी मान बदल जाएंगे। अंतर कहाँ है?फ़ंक्शन पैरामीटर में int * array और int array [] के बीच अंतर
पूर्णांक सरणी []:
void myFunction(int arr[], int size) {
for (int i = 0; i < size; ++i)
arr[i] = 1;
}
पूर्णांक * सरणी:
void myFunction(int * arr, int size) {
for (int i = 0; i < size; ++i)
arr[i] = 1;
}
दोनों कार्यों सरणी मूल्यों को बदल।
int main(){
int array[3];
array[0] = 0;
array[1] = 0;
array[2] = 0;
myFunction(array, 3);
return 0;
}
इस http://stackoverflow.com/questions/5491789/any-difference-between-fooint-arr-and-fooint-arr – Rohan
कोई फर्क नहीं पड़ता है। बिलकुल। _ फ़ंक्शन पैरामीटर list_ में, 'int arr [] '' int * arr' के लिए "वैकल्पिक" लेखन के अलावा कुछ भी नहीं है। (और यही कारण है कि आप 'int main (int argc, char * argv [])' या 'int main (int argc, char ** argv)' देख सकते हैं।) भले ही आप ब्रैकेट के अंदर कोई संख्या डालें !: 'शून्य एफ में (int [10])' 10' पूरी तरह से ** अनदेखा ** है, जिसका अर्थ है 'शून्य एफ (int a [])' यानी 'शून्य एफ (int * ए)'। –
और जैसा कि उत्तर में कहा गया है, कॉल 'myFunction (सरणी, 3);' आपकी सरणी को इसके पहले तत्व में _pointer_ में रूपांतरित कर दिया गया है, और वह सूचक फ़ंक्शन (पैरामीटर के लेखन के साथ) के रूप में पास किया जाता है, जैसा कि अगर आपने 'मेरा कार्य (& (सरणी [0]) कहा था, 3); '। वास्तव में सरणी को पार करने का एक तरीका (वास्तव में, इसे _reference_) एक फ़ंक्शन लिखना है जैसे 'टेम्पलेट शून्य जी (int (& arr) [size])', जो आपको इसे इस तरह से कॉल करने देता है: 'g (array) ; '। –