Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में Array Decay क्या है? इसकी रोकथाम कैसे की जा सकती है?

यहां हम देखेंगे कि ऐरे डेके क्या है। किसी सरणी के प्रकार और आयामों के नुकसान को सरणी क्षय कहा जाता है। यह तब होता है जब हम पॉइंटर या वैल्यू द्वारा एरे को फंक्शन में पास करते हैं। पहला पता उस सरणी को भेजा जाता है जो एक सूचक है। इसीलिए, सरणी का आकार मूल नहीं है।

आइए C++ कोड का उपयोग करके सरणी क्षय का एक उदाहरण देखें,

उदाहरण

#include<iostream>
using namespace std;
void DisplayValue(int *p) {
   cout << "New size of array by passing the value : ";
   cout << sizeof(p) << endl;
}
void DisplayPointer(int (*p)[10]) {
   cout << "New size of array by passing the pointer : ";
   cout << sizeof(p) << endl;
}
int main() {
   int arr[10] = {1, 2, };
   cout << "Actual size of array is : ";
   cout << sizeof(arr) <<endl;
   DisplayValue(arr);
   DisplayPointer(&arr);
}

आउटपुट

Actual size of array is : 40
New size of array by passing the value : 8
New size of array by passing the pointer : 8

अब, हम देखेंगे कि C++ में सरणी क्षय को कैसे रोका जाए। सरणी क्षय को रोकने के लिए निम्नलिखित दो तरीके हैं।

  • सरणी के आकार को एक पैरामीटर के रूप में पारित करके सरणी क्षय को रोका जाता है और सरणी के मापदंडों पर sizeof() का उपयोग नहीं किया जाता है।
  • संदर्भ द्वारा फ़ंक्शन में सरणी पास करें। यह सरणी को पॉइंटर में बदलने से रोकता है और यह सरणी क्षय को रोकता है।

उदाहरण

#include<iostream>
using namespace std;
void Display(int (&p)[10]) {
   cout << "New size of array by passing reference: ";
   cout << sizeof(p) << endl;
}
int main() {
   int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
   cout << "Actual size of array is: ";
   cout << sizeof(arr) <<endl;
   Display(arr);
}

आउटपुट

Actual size of array is: 40
New size of array by passing reference: 40

  1. n आकार के दिए गए सरणी की जाँच करें n स्तरों के BST का प्रतिनिधित्व कर सकते हैं या C++ में नहीं

    हमारे पास एक सरणी ए है, हमें यह जांचना होगा कि सरणी एन स्तरों के साथ बीएसटी का प्रतिनिधित्व कर सकती है या नहीं। जैसा कि स्तर है, हम निम्नलिखित तरीके से एक पेड़ का निर्माण कर सकते हैं। मान लें कि कोई संख्या k है, k से बड़ा मान दाईं ओर जाता है, और k से कम बाईं ओर चलता है। मान लीजिए कि दो सूचियाँ हैं:{

  1. मैं सी ++ का उपयोग कर कंसोल कैसे साफ़ कर सकता हूं?

    हम C++ कोड का उपयोग करके कंसोल को साफ़ कर सकते हैं। ऐसा करने के लिए हमें कुछ सिस्टम कमांड निष्पादित करने होंगे। Linux सिस्टम में, POSIX का उपयोग किया जाता है। सिस्टम कमांड को निष्पादित करने के लिए हम सिस्टम () फ़ंक्शन को कॉल कर सकते हैं। लिनक्स में कंसोल को साफ करने के लिए, हम क्लियर कमांड का उपयोग

  1. फार्मिंग क्या है और इसे कैसे रोका जा सकता है?

    इस दिन और उम्र में भोले-भाले कंप्यूटर उपयोगकर्ता दुर्लभ होते जा रहे हैं। इंटरनेट पर प्रचलित मैलवेयर शिक्षा के साथ, लोगों को धोखाधड़ी वाले ईमेल द्वारा इतनी आसानी से मूर्ख नहीं बनाया जाता है, जिसमें दावा किया जाता है कि उन्होंने लाखों डॉलर जीते हैं। इसका मतलब यह नहीं है कि हैकर्स ने कम दृढ़ निश्चय कि