2009-11-08 28 views
8

मैं मूल सरणी दोनों के तत्वों वाला एक सरणी प्राप्त करने के लिए दो सरणी कैसे जोड़ूं?मैं सी में दो सरणी कैसे जोड़ सकता हूं?

+1

हाँ ... चूंकि दोनों उत्तर "concatenation" व्याख्या का जवाब दे रहे हैं, और ओपी स्पष्ट करने के लिए वापस नहीं आया है, मैंने इसे प्रतिबिंबित करने के लिए प्रश्न संपादित किया है। – Shog9

उत्तर

26

सी में सरणी बस अपनी शुरुआत के लिए सूचक के साथ स्मृति का एक संगत क्षेत्र है *। तो उन्हें मर्ज शामिल है:

  1. , सरणियों ए और बी की लंबाई का पता लगाएं
  2. आवंटन (malloc) एक नई सरणी सी (आप शायद तत्वों की संख्या और sizeof प्रत्येक तत्व जानने की आवश्यकता होगी) कि ए + बी
  3. प्रतिलिपि (memcpy) ए से सी,
  4. बी से सी + की लंबाई को ए की लंबाई (देखें 1) की प्रतिलिपि बनाएँ।
  5. तुम भी चाहते हो सकता है डी-आवंटित करने के लिए (free) एक की स्मृति और बी

ध्यान दें कि यह एक महंगी आपरेशन है, लेकिन इस बुनियादी सिद्धांत है। यदि आप एक पुस्तकालय का उपयोग कर रहे हैं जो कुछ अमूर्तता प्रदान करता है, तो आप बेहतर हो सकते हैं। यदि ए और बी अधिक जटिल हैं तो एक साधारण सरणी (उदा। क्रमबद्ध सरणी), आपको स्मार्ट कॉपी करने की आवश्यकता होगी, फिर चरण 3 और 4 (देखें: how do i merge two arrays having different values into one array)।


  • इस सवाल के उद्देश्य के लिए है, सूचक स्पष्टीकरण पर्याप्त होगा, सख्ती से बोला (और नीचे टिप्पणीकार pacifying के लिए): सी एक सरणी की अवधारणा है, कि बिना इस्तेमाल किया जा सकता पॉइंटर्स का सिंटैक्स। कार्यान्वयन के अनुसार, हालांकि, एक सी सरणी और स्मृति का एक संगत क्षेत्र, एक सूचक के साथ पर्याप्त निकट हो सकता है, और अक्सर, एक दूसरे के लिए उपयोग किया जाता है।
+0

"... अपनी शुरुआत के लिए एक सूचक के साथ ..." कहाँ से आया? जब मैं 'int [10]' घोषित करता हूं, मुझे इसमें 10 'int' के साथ स्मृति का एक संगत क्षेत्र मिलता है और कोई भी संकेतक नहीं होता है। – AnT

+2

@AndreyT: 'a' आपका सूचक है। आपको अन्य उत्तरों पर आपकी टिप्पणी में इसके बारे में पता होना प्रतीत होता है ... – Shog9

+0

@ शोग 9: 'ए 'एक सूचक नहीं है। 'ए 'एक सरणी है। जब सरणी प्रकार सूचक प्रकार के लिए decays, परिणामी सूचक केवल एक मध्यवर्ती अस्थायी मान है, जिसका '''' से कोई लेना देना नहीं है। उपरोक्त पदों को पोस्ट करना गलत है, जब तक यह विशेष रूप से 'malloc'ed arrays के बारे में बात नहीं करता है। – AnT

संबंधित मुद्दे