2010-06-24 16 views
5

संभव डुप्लिकेट:
C pointer to array/array of pointers disambiguationकौन सा * और [] सी में सबसे मजबूत बांधता है?

सी में, int *thing[5], पांच संकेत की एक सरणी है प्रत्येक पाँच पूर्णांक की एक सरणी के लिए एक पूर्णांक है, या एक सूचक की ओर इशारा करते?

उत्तर

7

[] प्रति ट्रम्प C precedence table का मतलब है जिसका अर्थ है कि आपके पास पांच int पॉइंटर्स हैं।

4

शायद एक डुप्लिकेट है ... यह पूर्णांक के लिए पांच पॉइंटर्स की एक सरणी है; कार्यक्रम cdecl एक समान प्रश्न में उद्धृत नौसिखिया के लिए उपयोगी हो सकता है:

cdecl> explain int *t[5]; 
declare t as array 5 of pointer to int 
+0

इसके अलावा: - सूचक के रूप में> घोषित बात पूर्णांक की सरणी से 5 'cdecl> पूर्णांक (* बात) [5] समझाने ' यह पॉइंटर को 5 इंच की एक सरणी के बारे में पूछता है जो उसने पूछा था। –

6

संदेह उपयोग कोष्टक में है - रखरखाव प्रोग्रामर धन्यवाद होगा

0
(के रूप में होगा आप सुबह 5 बजे जब आप अंततः बग मिल!)

अनुपस्थित कोष्ठकों के साथ किसी भी स्पष्ट समूह, दोनों सरणी सबस्क्रिप्ट ऑपरेटर [] और समारोह कॉल ऑपरेटर () से पहले बाँध *, तो

T *a[N];  -- a is an N-element array of pointer to T 
T (*a)[N];  -- a is a pointer to an N-element array of T 

T *f();   -- f is a function returning pointer to T 
T (*f)();  -- f is a pointer to a function returning T 

यह व्याकरण से इस प्रकार है (ले । N Harbison & स्टील, 5 एड, परिशिष्ट बी) से:

 
declarator: 
    pointer-declarator 
    direct-declarator 

pointer-declarator: 
    pointer direct-declarator 

pointer: 
    * type-qualifier-listopt 
    * type-qualifier-listopt pointer 

direct-declarator: 
    simple-declarator 
    (declarator) 
    function-declarator 
    array-declarator 

function-declarator: 
    direct-declarator (parameter-type-list) 
    direct-declarator (identifier-listopt) 

array-declarator: 
    direct-declarator [ constant-expressionopt ] 
    direct-declarator [ array-qualifier-listopt array-size-expressionopt ]  
    direct-declarator [ array-qualifier-listopt * ] 
संबंधित मुद्दे