यहां कुछ कोड है जो मैंने सी ++ में लिखा है जो मूल बातें करता है।
#include <iostream>
int main(int argc, char *argv[])
{
int* my_dynamic_array;
int size;
std::cin >> size;
my_dynamic_array = new int[size];
for (int k=0; k<size; k++)
my_dynamic_array[k] = k;
for (int k=0; k<size; k++)
std::cout << my_dynamic_array[k] << std::endl;
delete[] my_dynamic_array;
return 0;
}
ठीक है, तो इस कोड में क्या हो रहा है। हम std :: cin का उपयोग करके सरणी के आकार के लिए संकेत दे रहे हैं और फिर नए कीवर्ड का उपयोग गतिशील रूप से सरणी के लिए कुछ स्मृति आवंटित करने के लिए कर रहे हैं। यहां कुछ विवरण दिए गए हैं जो इसे पहले थोड़ा अजीब लगते हैं; ऐसा लगता है कि कई नए सी ++ डेवलपर्स के साथ भ्रम पैदा हो रहा है।
तो सबसे पहले हमने सरणी घोषणा के बजाए एक पॉइंटर के साथ हमारी गतिशील सरणी घोषित की, उदाहरण के लिए हमने के बजाय int *my_dynamic_array
का उपयोग किया। सबसे पहले यह बहुत छोटा लगता है, लेकिन ऐसा कुछ है जिसे आपको समझने की आवश्यकता है कि सी और सी ++ में क्या हो रहा है।
जब आप स्थाई रूप से एक सरणी घोषित करते हैं, तो आप प्रोग्राम को बता रहे हैं कि आप उस स्मृति को आपके लिए उपयोग करना चाहते हैं। यह वास्तव में है; आप का उपयोग शुरू करने के लिए यह तुम्हारा है। जब आप गतिशील रूप से एक सरणी बनाते हैं, तो आप एक पॉइंटर से शुरू करते हैं। पॉइंटर्स सिर्फ कुछ स्मृति का संदर्भ हैं। वह स्मृति अभी तक आवंटित नहीं है। यदि आप इसमें कुछ पहुंचने का प्रयास करते हैं, तो कहें, my_dynamic_array[3]
, आपको एक ग़लत त्रुटि मिल जाएगी। ऐसा इसलिए है क्योंकि वास्तव में उस स्थान पर स्मृति में कुछ भी नहीं है (प्रोग्राम को उपयोग करने के लिए कम से कम कुछ भी नहीं दिया गया है)।
delete
के बजाय delete[]
का उपयोग भी ध्यान दें। जब आप सरणी के साथ काम करते हैं तो आप स्मृति को मुक्त करते हैं।
आप सी में इस कार्य कर रहे हैं, तो आप इस एक ही तरह से, लेकिन इसके बजाय new
की और delete[]
आप malloc
और free
है काफी सोच सकते हैं।
गतिशील सरणी और पॉइंटर्स के बीच सूक्ष्म मतभेदों को जानना मुश्किल है। इससे पहले कि मैं पूरी तरह से समझ रहा था कि मुझे क्या चल रहा था, मुझे थोड़ी देर लग गई। शुभकामनाएं और इसे रखें।
ग या C++? प्रत्येक के लिए अलग-अलग सुझाव होंगे। – hmjd
सी ++ – mathematician1975
सी के लिए उपयोग करते हुए std :: vector देखें, आपको 'malloc' ... – MByD