एक असंगत प्रकार की त्रुटि है क्योंकि आप इन्ट्स के पॉइंटर्स के सरणी (जैसे int *x[]
) पर तारों के सरणी (सी में टाइप करें * टाइप कर रहे हैं) को निर्दिष्ट कर रहे हैं। कंपाइलर द्वारा दिया गया त्रुटि संदेश थोड़ा उलझन में है क्योंकि सी दृश्यों के पीछे बहुत कुछ करता है ताकि चर को एक प्रकार से दूसरे में परिवर्तित करने का प्रयास किया जा सके।
जैसे वर्णों को आंतरिक रूप से संख्याओं के रूप में दर्शाया जाता है (अक्ष उनके एएससीआईआई मानों के अनुरूप होते हैं), सी अक्षरों को इंकों में परिवर्तित करने में सक्षम है, इसलिए यह एक्स और वाई को चर के बजाय वर्णों के लिए पॉइंटर्स के सरणी के रूप में व्यवहार करने का प्रयास करता है, इसलिए char *[3]
। यह char **
टाइप के रूप में {"foo", "bar", "baz"} देखता है क्योंकि तार char *
टाइप करते हैं और एरे अनिवार्य रूप से सी में पॉइंटर्स के रूप में संग्रहीत होते हैं, इसलिए यह char *
, या char **
पर पॉइंटर है।
हालांकि यह आपके प्रश्न से पूरी तरह से संबंधित नहीं है, मुझे यह भी आश्चर्य है कि आप x = y;
के साथ क्या करने का प्रयास कर रहे हैं जैसा कि यह लिखा गया है, जो x के समान सरणी को एक्स बिंदु बना देगा, एक्स का उपयोग करने वाले सरणी को छोड़कर पहुंचने के लिए इंगित करने के लिए। यह जांचने के लिए कि सी में दो चर बराबर हैं, आप == ऑपरेटर का उपयोग करेंगे। परीक्षण समानता सरणी या तारों के लिए उतनी आसान नहीं है, लेकिन यह पूरी तरह से इस प्रश्न के दायरे से बाहर है।
आप पूर्णांक पॉइंटर्स रखने वाले सरणी में वर्ण तार क्यों संग्रहीत कर रहे हैं? –
क्या आपने लाइन नंबर देखा था? – SLaks