पॉइंटर और अर्रे के बीच का अंतर

Anonim

पॉइंटर बनाम अर्रे

पॉइंटर एक डेटा प्रकार है जो मेमोरी स्थान (यानी। एक सूचक चर एक स्मृति स्थान का एक पता संग्रहीत करता है जिसमें कुछ डेटा संग्रहीत किया जाता है).अरेज़ तत्वों के संग्रह को संग्रहित करने के लिए सबसे अधिक इस्तेमाल किया जाने वाला डेटा संरचना है। अधिकांश प्रोग्रामिंग भाषाओं सरणियों को आसानी से घोषित करने और सरणियों में पहुंच तत्वों को प्रदान करने के तरीकों को प्रदान करते हैं।

एक सूचक क्या है?

एक सूचक एक डेटा प्रकार है जो किसी मेमोरी स्थान का एक पता संग्रहीत करता है जिसमें कुछ डेटा संग्रहीत होता है। दूसरे शब्दों में, एक पॉइंटर मेमोरी स्थान के संदर्भ। पॉइंटर द्वारा संदर्भित स्मृति स्थान में संग्रहीत डेटा को डीरेंसिंग कहा जाता है। बार-बार दोहराव के संचालन जैसे पेपर / स्ट्रिंग, टेबल लुकअप, इत्यादि को बदलते हुए, पॉइंटर्स का इस्तेमाल करके प्रदर्शन में सुधार होगा। इसका कारण यह है कि पॉइंटर्स द्वारा इंगित डेटा को प्रतिलिपि बनाने और तक पहुंचने के बजाय डेंफरेंसिंग और प्रतिलिपि पॉइंटर्स सस्ता है। एक अशक्त सूचक एक सूचक है जो कुछ भी नहीं इंगित करता है। जावा में, एक अशक्त सूचक तक पहुंचने से एक अपवाद उत्पन्न होता है जिसे एक NullPointerException कहा जाता है।

एक सरणी क्या है?

आंकड़ा 1 में दिखाया गया, कोड का एक टुकड़ा आम तौर पर एक सरणी के मूल्यों को घोषित करने और निर्दिष्ट करने के लिए उपयोग किया जाता है। चित्रा 2 में दर्शाया गया है कि स्मृति में कैसे एक सरणी दिखाई देगी

पूर्णांक मान [5];

मान [0] 100 =;

मान [1] = 101;

मान [2] 102 =;

मान [3] = 103;

मान [4] 104 =;

चित्रा 1: सरणी के लिए मूल्यों को घोषित करने और निर्दिष्ट करने के लिए कोड

100

101 102 103 104 अनुक्रमणिका: 0
1 2 < 3 4 चित्रा 2: मेमोरी में संरेखित एरे कोड के ऊपर एक एरे परिभाषित करता है जो 5 इंटिजर्स को स्टोर कर सकता है और इन्हें इंडेक्स 0 से 4 तक पहुंचाए जाते हैं। एक सरणी की एक महत्वपूर्ण संपत्ति यह है कि, संपूर्ण सरणी को स्मृति के एक ब्लॉक के रूप में आवंटित किया जाता है और प्रत्येक तत्व को सरणी में अपनी जगह मिलती है। एक सरणी परिभाषित होने के बाद, इसका आकार तय हो जाता है इसलिए यदि आप संकलन समय पर सरणी के आकार के बारे में निश्चित नहीं हैं, तो आपको सुरक्षित पक्ष में एक बड़ी पर्याप्त सरणी को परिभाषित करना होगा। लेकिन, ज्यादातर समय, हम वास्तव में आवंटित किए गए तत्वों की कम संख्या का उपयोग करने जा रहे हैं। इसलिए स्मृति की काफी मात्रा वास्तव में व्यर्थ है दूसरी तरफ अगर "बड़ी पर्याप्त सरणी" वास्तव में बड़ी नहीं है, तो कार्यक्रम क्रैश हो जाएगा।

पॉइंटर्स और एरे के बीच अंतर क्या है?

एक सूचक एक डेटा प्रकार है जो स्मृति स्थान का एक पता संग्रहीत करता है जिसमें कुछ डेटा संग्रहीत होता है, जबकि एरे तत्व तत्वों का संग्रह संग्रहीत करने के लिए सबसे अधिक इस्तेमाल किया जाने वाला डेटा संरचना होता है। सी प्रोग्रामिंग भाषा में, सरणी अनुक्रमणिका को सूचक अंकगणितीय का उपयोग किया जाता है (i। एरे का ith तत्व x * * (x + i) के बराबर होगा)।अतः सी में, पॉइंटर्स के सेट जो मेमोरी स्थानों के एक सेट को इंगित करते हैं जो लगातार होते हैं, उन्हें एक सरणी के रूप में माना जा सकता है। इसके अलावा, इसमें एक अंतर है कि आकार ऑपरेटर कैपेसर और सरणियों पर कैसे काम करता है। जब एक सरणी पर लागू होता है, आकारऑफ़ ऑपरेटर सरणी के पूरे आकार को वापस करेगा, जबकि जब एक सूचक पर लागू किया जाता है, तो यह केवल सूचक का आकार वापस करेगा।