मैं यह पता लगाने की कोशिश कर रहा हूं कि सी # में कुछ करने का कोई तरीका है जो सी ++ में करना आसान है। विशेष रूप से, यदि मेरे पास डेटा की एक सरणी है, तो मैं उपखंड को अधिक आसानी से एक्सेस करने के लिए उस डेटा में एक पॉइंटर बना सकता हूं।सरणी के सबसेट तक पहुंचने का तरीका?
उदाहरण के लिए, अगर मेरे पास है:
unsigned char buffer[1000];
और मैं निर्धारित है कि सरणी के भीतर पदों 102 से 110 पर एक तार है कि मैं एक बहुत हेरफेर करने के लिए की जरूरत है कि, मैं यह कर सकता:
unsigned char *strPtr = &buffer[102];
char firstChar = strPtr[0];
यह मुझे बाद के संचालन में प्रत्येक सरणी अनुक्रमणिका में "102" जोड़ने से बचाता है।
जबकि जब आप ऐसा कुछ करते हैं तो असुरक्षित परिस्थितियों की संभावना को पहचानते हैं, तो मुझे आश्चर्य है कि सी # में नैतिक समकक्ष है जो मुझे मौजूदा सरणी के उप-समूह के लिए एक नया संदर्भ बनाने देगा।
कुछ की तरह:
byte [8] newArray = &buffer[102];
उदाहरण वास्तव में काम है कि नहीं करता है या मैं इस पोस्टिंग नहीं किया जाएगा, लेकिन मैं इसे मैं क्या भर में पूरा करने के लिए चाहते हैं के विचार हो जाता है लगता है।
क्या आप चाहते हैं कि यह मूल सरणी को कॉपी या संशोधित करे? – BalinKingOfMoria
मैं वास्तव में इसे वापस लिख नहीं रहा हूं, बस इसे पढ़ रहा हूं। मैं डेटा कॉपी करने से बचना चाहता हूं। असल में, मैं नहीं पूछूंगा कि डेटा कॉपी करना एक ट्रिपिंग पॉइंट नहीं था। –
यदि आपकी चिंता केवल डेटा से पढ़ने के लिए है, तो क्यों न केवल 'int offset = 102; बफर [ऑफ़सेट + मैं] ... '? इसका मतलब है कि आपको कार्य पूरा करने के लिए असुरक्षित कोड की आवश्यकता नहीं है। 'ArraySegment 'ऐसा करने के लिए निश्चित रूप से एक क्लीनर दृष्टिकोण भी है। यदि आप किसी कारण से ऑफसेट गणना से बचने की कोशिश कर रहे हैं, तो आपको असुरक्षित कोड का उपयोग करना होगा। –