2011-11-13 19 views
11

मैं जानता हूं कि यह सच है:सी बहुआयामी सरणियों में अजीब सारणी वाक्य-विन्यास

x[4] == 4[x] 

बहुआयामी सरणियों के लिए बराबर क्या है? क्या यह सच है?

x[4][3] == 3[x[4]] == 3[4[x]] 
+2

क्या आपने इसे आजमाया? क्या हुआ? –

+0

एक्स [4] 4 के बराबर कैसे है [x]? –

+1

@ जिम: एक्स [4] == * (एक्स + 4) == * (4 + एक्स) == 4 [x] –

उत्तर

13

x[y]*(x + (y))

x[y][z] के रूप में परिभाषित किया गया है बन जाएगा *(*(x + (y)) + z)

x[y[z]] बन *(x + (*(y + (z))))


x[4][3] बन जाएगा होगा *(*(x + (4)) + 3) +०१२३६१९९७५२९बन जाएगा *(*(x + 4) + 3)

3[x[4]]*(3 + (*(x + (4)))) बन बन *(*(x + 4) + 3)

3[4[x]] बन जाएगा *(3 + (*(4 + (x))))*(*(x + 4) + 3)

बन जाएगा जिसका मतलब है कि वे सभी बराबर हैं जाएगा।

+0

एक बहुआयामी सरणी 'int x [5] [7]' के मामले में आपके पास 'x [y] [z]' '* (x + 7 * y + z) 'के रूप में परिभाषित किया गया होगा। और 'x [y]' संकेतित टुकड़ा के लिए सूचक 'x + 7 * y' यानी बन जाएगा। लेकिन मुझे विश्वास है कि समकक्ष अभी भी पकड़ते हैं, भले ही विस्तारित अभिव्यक्ति कुछ हद तक लंबी हों। यदि संकलक कोड को स्वीकार करता है, तो वह है। – MvG

1

हां। प्रत्येक मामले में x एक सरणी है जो एक पॉइंटर को क्षय करती है और उसके बाद पॉइंटर अंकगणित पर प्रदर्शन किया जाता है।