2013-07-17 14 views
6
void test(int x[static 10]); 

int main() 
{ 
    int a[]={1,2,3,4,5,6,7,8,9,10,11}; 
    test(a); 
    return 0; 
} 

void test(int x[static 10]) 
{ 
    printf("%d",x[9]); 
} 

मैं विचित्र सी कथन की तलाश में था। मुझे यह पता चला, लेकिन यह समझ में नहीं आया कि उस वक्तव्य में static 10 का उपयोग क्या है। क्या यह int x[10] जैसा है?विचित्र सी कथन

एक और बात, आप में से static, उदा, int x[volatile 10]
किसी को जानता है इस थोड़े घोषणा के उपयोग क्या है जगह में भी volatile उपयोग कर सकते हैं?

पुनश्च: जीसीसी 4.6.3,

+2

मैंने पहले इस सवाल का देखा है। – chris

+2

लिंक कृपया, मैंने पोस्ट करने से पहले खोज की है। –

+1

@AkashShende http://stackoverflow.com/questions/3430315/purpose-of-static-keyword-in-array-parameter-of-function –

उत्तर

5

का उपयोग कर संकलित यह संकलक बताने के लिए एक संकेत है कि x कम से कम 10 तत्वों की एक सरणी के पहले तत्व के लिए सूचक पैरामीटर अंक।

उदाहरण के लिए:

test(NULL); // undefined behavior 
+0

यह मान्य सी ++ है? अनुकूलन में यह कितना उपयोगी है (यानी इनलाइन या बेहतर की तरह?) - बस अधिक जानकारी प्राप्त करने का प्रयास करें, धन्यवाद –

+0

हाँ, लेकिन प्रोग्राम बिना त्रुटि के चलाता है, भले ही तर्क प्रदान किया गया हो, कम से कम 10 –

+0

@ChrisCM मेरा उदाहरण देखें, एक 'नूल' तर्क पारित करना अपरिभाषित व्यवहार है। – ouah

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