पर विचार करें:यह 'लूप' वैध क्यों नहीं है?
int ia[3][4];
for (auto row : ia)
for (auto col : row)
पहले
for
आइए के माध्यम से दोहराता है, जिसका तत्वों आकार के एरे हैं 4. क्योंकिrow
एक संदर्भ नहीं है, संकलक initializes जबrow
यह प्रत्येक सरणी तत्व में परिवर्तित कर देंगे (जैसे सरणी प्रकार का कोई अन्य ऑब्जेक्ट) उस सरणी के पहले तत्व के पॉइंटर पर। परिणामस्वरूप, इस लूप मेंrow
का प्रकारint*
है।
मैं वास्तव में लगता है कि मैं समझता हूँ कि यह कैसे काम करता है ऑटो, लेकिन अगर मैं यह मान सकते हैं यह स्वचालित रूप से एक पंक्ति ia
सरणी सदस्यों के आधार पर टाइप करने के लिए एक प्रकार देता है, लेकिन मैं for
की क्यों इस तरह की समझ में नहीं आता नहीं कर रहा हूँ , जहां पंक्ति संदर्भ नहीं है, मान्य नहीं है। ऐसा क्यों होने जा रहा है? "उस सरणी के पहले तत्व के सूचक", किस वजह से?
उपयोग कर सकते हैं मैं सी में इस पाया ++ Lippman द्वारा प्राइमर 5 वें संस्करण, पेज 182. –