2012-06-20 13 views
5

के बीच अंतर निम्नलिखित दो फ़ंक्शन परिभाषाओं के बीच क्या अंतर है?
पैरामीटर के रूप में एक 2 डी सरणी पारित की जा रही है।पैरामीटर प्रकार

void fun(int a[][3]) 
{ 
    //do some task 
} 


void fun(int (*a)[3]) 
{ 
    //do some task 
} 

उत्तर

12

कुछ भी नहीं है, [] एक सूचक के लिए बस वाक्यात्मक चीनी है।

#include <stdio.h> 

void fun1(int a[][3]) { printf("%d\n", a[2][2]); } 
void fun2(int (*a)[3]){ printf("%d\n", a[2][2]); } 

void main() { 
    int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 
    fun1(a); // prints 9 
    fun2(a); // prints 9 
} 
3

कुछ भी नहीं है, दोनों एक ही हैं:

यहाँ वहाँ भी अनुक्रमण में एक फर्क नहीं है कि दिखाने के लिए एक साधारण परीक्षण मामला है। बस हमारे दृढ़ उद्देश्य के लिए।

2

उपरोक्त दो के बीच कोई अंतर नहीं है। सी में, जब फ़ंक्शन पैरामीटर के लिए सरणी नोटेशन का उपयोग किया जाता है, तो यह स्वचालित रूप से एक सूचक घोषणा में परिवर्तित हो जाता है।

संबंधित मुद्दे