संभव डुप्लिकेट:
May I treat a 2D array as a contiguous 1D array?क्या यह एक बोली-आयामी सरणी का उपयोग करने के लिए कानूनी है जैसे कि यह एक आयामी वाला है?
निम्नलिखित कोड पर विचार करें:
int array2d[10][10];
int *array1d = array2d[0];
मैं एक कार्यान्वयन जहां यह काम नहीं होगा कभी नहीं सुना है, लेकिन यह कानूनी है array2d
array1d
के माध्यम से पहुंच और कुशलतापूर्वक उपयोग करें? मानक का कौन सा वर्ग इस अनुमति देता है? क्या मानक रोकथाम कार्यान्वयन में कुछ भी दूसरे स्तर के सरणी के बीच अतिरिक्त स्थान या पैडिंग डालने से कुछ भी है (इसकी आवश्यकता नहीं है, लेकिन अभी भी)?
बोनस सवाल: वहाँ एक int[100]
जो एक reinterpret_cast
या एक सी शैली एक की आवश्यकता नहीं है के रूप में array2d
पहुंचने का एक तरीका है?
आप इसे हमेशा उस वर्ग में लपेट सकते हैं जो इसे आंतरिक रूप से एक-आयामी सरणी के रूप में संग्रहीत करता है। – chris
सी ++ obfuscated प्रतियोगिता के लिए साइन अप :) :)? – ScarletAmaranth
'int * array1d = array2d [0] नहीं है; 'थोड़ा और सीधा? – ildjarn