Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C/C++ में ऐरे आउट ऑफ बाउंड्स एक्सेस करना


Java जैसी भाषा में, यदि ऐरे को बाउंड्स से बाहर एक्सेस किया जाता है तो java.lang.ArrayIndexOutOfBoundsException जैसा एक्सेप्शन हो सकता है। लेकिन C में ऐसी कोई कार्यक्षमता नहीं है और यदि ऐरे को बाउंड्स से बाहर एक्सेस किया जाता है तो अनडिफाइंड बिहेवियर हो सकता है।

एक प्रोग्राम जो इसे C में प्रदर्शित करता है वह इस प्रकार है।

उदाहरण

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    printf("The elements of array : ");
    for(int i = 0; i < 6; i++)
        printf(" %d", arr[i]);
    return 0;
}

आउटपुट

उपरोक्त प्रोग्राम का आउटपुट इस प्रकार है।

The elements of array : 1 2 3 4 5 32765

अब आइए उपरोक्त प्रोग्राम को समझते हैं।

ऐरे arr को केवल सबस्क्रिप्ट 4 तक मान असाइन किए गए हैं। इसलिए जब ऐरे एलिमेंट्स प्रिंट किए जाते हैं, तो arr[5] का परिणाम गार्बेज वैल्यू में होता है। वह कोड स्निपेट जो इसे दिखाता है वह इस प्रकार है।

int arr[] = {1,2,3,4,5};
printf("The elements of array : ");
for(int i = 0; i<6; i++)
    printf(" %d", arr[i]);
  1. मर्ज सॉर्ट का उपयोग करके ऐरे में इनवर्जन गिनने के लिए C/C++ प्रोग्राम? मर्ज सॉर्ट का उपयोग करके ऐरे में इनवर्जन गिनने के लिए C/C++ प्रोग्राम?

    दिए गए ऐरे को क्रमबद्ध करने के लिए होने वाले इनवर्जन की संख्या को इनवर्जन काउंट (inversion count) के रूप में जाना जाता है। इनवर्जन समस्या एक शास्त्रीय समस्या है जिसे मर्ज सॉर्ट एल्गोरिदम का उपयोग करके हल किया जा सकता है। इस समस्या में हम इसके बाईं ओर उससे बड़े सभी एलिमेंट्स को गिनेंगे और काउंट को आ

  1. C/C++ में मल्टीडायमेंशनल ऐरे का इनिशियलाइज़ेशन C/C++ में मल्टीडायमेंशनल ऐरे का इनिशियलाइज़ेशन

    मल्टीडायमेंशनल ऐरे में, ऐरे का डायमेंशन 1 से अधिक होना चाहिए। निम्नलिखित डायग्राम 3 x 3 x 3 डायमेंशन वाले मल्टीडायमेंशनल ऐरे के लिए मेमोरी आवंटन रणनीति दिखाता है। यह मल्टीडायमेंशनल ऐरे को इनिशियलाइज़ करने के लिए एक C++ प्रोग्राम है। एल्गोरिदम Begin मल्टीडायमेंशनल ऐरे के एलिमेंट्स इनिशियलाइज

  1. - C++ में ऐरे आउट ऑफ बाउंड्स एक्सेस करने पर कोई एरर क्यों नहीं देता?

    यह इस तथ्य के कारण है कि C++ बाउंड्स चेकिंग नहीं करता। जावा और पायथन जैसी भाषाओं में बाउंड्स चेकिंग होती है इसलिए यदि आप आउट ऑफ बाउंड्स एलिमेंट को एक्सेस करने का प्रयास करते हैं, तो वे एरर फेंकते हैं। C++ का डिज़ाइन सिद्धांत था कि यह समतुल्य C कोड से धीमा नहीं होना चाहिए, और C ऐरे बाउंड्स चेकिंग नह