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. C++ में जांचें कि आकार n की दी गई सरणी n लेवल के BST को दर्शा सकती है या नहीं C++ में जांचें कि आकार n की दी गई सरणी n लेवल के BST को दर्शा सकती है या नहीं

    हमारे पास एक सरणी A है, हमें जांचना है कि सरणी n लेवल के BST को दर्शा सकती है या नहीं। चूंकि लेवल n है, हम निम्न तरीके से ट्री बना सकते हैं। मान लीजिए एक संख्या k है, k से बड़ा मान दाईं ओर जाता है, और k से छोटा मान बाईं ओर जाता है। मान लीजिए दो सूचियां हैं: {50, 20, 9, 25, 10}, और {50, 30, 20, 25, 1

  1. C++ में कंसोल क्लियर करना C++ में कंसोल क्लियर करना

    C++ में कंसोल स्क्रीन क्लियर करने के लिए प्लेटफॉर्म-विशिष्ट कमांड का उपयोग करना पड़ता है। Linux/Unix में clear और Windows में cls कमांड उपयोग होती है। Linux/Unix के लिए #include <iostream> #include <cstdlib> using namespace std; int main() { cout << Screen will be cleared in

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

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