2016-03-25 10 views
8

मैं Bruce Dawson's article on porting Chromium to VC 2015 पढ़ रहा हूं, और वह encountered some C code that I don't understand पढ़ रहा है।चार सी [2] = {[1] = 7} क्या करता है; कर?

कोड है:

char c[2] = { [1] = 7 }; 

ब्रूस उस पर केवल टिप्पणी है: "। मैं सरणी प्रारंभ इस्तेमाल किया वाक्य रचना से परिचित नहीं हूँ - मुझे लगता है यह है कुछ सी-ही निर्माण" तो इस वाक्यविन्यास वास्तव में क्या मतलब है?

उत्तर

12

C99 आपको किसी भी क्रम में सरणी के तत्व निर्दिष्ट करने की अनुमति देता है (यदि आप इसे खोज रहे हैं तो इसे "नामित प्रारंभकर्ता" कहा जाता है)। तो यह निर्माण c के दूसरे तत्व में 7 असाइन कर रहा है।

यह अभिव्यक्ति char c[2] = {0, 7}; के बराबर है जो इस तरह के एक छोटे प्रारंभिक के लिए जगह नहीं बचाती है लेकिन बड़े स्पैर सरणी के लिए बहुत उपयोगी है।

अधिक जानकारी के लिए इस पेज देखें: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

+2

यह 'चार सी के बराबर है [2] = {0 , 7}; 'यहां पर नामित प्रारंभिक यंत्र लंबे सरणी और संरचनाओं के मामलों में बहुत सुविधाजनक है। –

+0

यह कल्पना करने का एक और आसान तरीका है, यह। उत्तर में जोड़ा गया। –

2

इसका अर्थ

char c[2]={ 0, 7 } 

होगा या आप कह सकते हैं

char c[2]; 
c[0]=0; 
c[1]=7; 
+0

क्यों 'नूल', यह एक शून्य *** सूचक *** निरंतर है ?! आप 'char' प्रारंभ करने के लिए' 0' या ''\ 0''' का उपयोग करना चाहते हैं। – alk

+0

ओह श्री मेरा मतलब था 0x0 इसकी एनटी एनयूएल – Mukesh

+0

आपका दूसरा उदाहरण प्रारंभकर्ता नहीं है लेकिन रन-टाइम कथन है। –

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