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

सी ++ को मॉलोक () के लिए कास्ट की आवश्यकता क्यों है लेकिन सी नहीं करता है?

सी भाषा में, शून्य पॉइंटर्स को ऑब्जेक्ट पॉइंटर प्रकार में परोक्ष रूप से परिवर्तित किया जाता है। फ़ंक्शन malloc() C89 मानक में शून्य * देता है। सी के पुराने संस्करणों में, malloc() चार * देता है। सी ++ भाषा में, डिफ़ॉल्ट रूप से malloc() int मान देता है। इसलिए, स्पष्ट कास्टिंग का उपयोग करके पॉइंटर्स को ऑब्जेक्ट पॉइंटर्स में बदल दिया जाता है।

C भाषा में मेमोरी आवंटित करने का सिंटैक्स निम्नलिखित है।

pointer_name = malloc(size);

यहाँ,

pointer_name - पॉइंटर को दिया गया कोई भी नाम।

आकार - बाइट्स में आवंटित मेमोरी का आकार।

निम्नलिखित C भाषा में malloc() का एक उदाहरण है।

उदाहरण

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = malloc(n * sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

आउटपुट

Enter elements of array : 2 28 12 32
Sum : 74

उपरोक्त उदाहरण में C भाषा में, यदि हम स्पष्ट कास्टिंग करते हैं, तो यह कोई त्रुटि नहीं दिखाएगा।

C++ भाषा में मेमोरी आवंटित करने का सिंटैक्स निम्नलिखित है।

pointer_name = (cast-type*) malloc(size);

यहाँ,

pointer_name - पॉइंटर को दिया गया कोई भी नाम।

कास्ट-प्रकार - डेटाटाइप जिसमें आप आवंटित मेमोरी को malloc() द्वारा डालना चाहते हैं।

आकार - बाइट्स में आवंटित मेमोरी का आकार।

निम्नलिखित C++ भाषा में malloc() का एक उदाहरण है।

उदाहरण

#include <iostream>
using namespace std;
int main() {
   int n = 4, i, *p, s = 0;
   p = (int *)malloc(n * sizeof(int));
   if(p == NULL) {
      cout << "\nError! memory not allocated.";
      exit(0);
   }
   cout << "\nEnter elements of array : ";
   for(i = 0; i < n; ++i) {
      cin >> (p + i);
      s += *(p + i);
   }
   cout << "\nSum : ", s;
   return 0;
}

आउटपुट

Enter elements of array : 28 65 3 8
Sum : 104

उपरोक्त उदाहरण में C++ भाषा में, यदि हम स्पष्ट कास्टिंग नहीं करेंगे, तो प्रोग्राम निम्न त्रुटि दिखाएगा।

error: invalid conversion from ‘void*’ to ‘int*’ [-fpermissive]
p = malloc(n * sizeof(int));

  1. द्विभाजन विधि के लिए C++ कार्यक्रम

    0 और फलन f(x) a और b के बीच होना चाहिए अर्थात f(x) =[a, b ]. कार्य द्विभाजन विधि का उपयोग करके फ़ंक्शन f(x) में अंतराल a और b के बीच स्थित रूट का मान ज्ञात करना है। द्विभाजन विधि क्या है? द्विभाजन विधि का प्रयोग a और b द्वारा परिभाषित दी गई सीमाओं के भीतर फलन f(x) में एक मूल का मान ज्ञात करने के

  1. सी++ में पिरामिड के आयतन के लिए कार्यक्रम

    पिरामिड के आधार के प्रकार के आधार पर पक्षों को देखते हुए पिरामिड के आयतन की गणना करना कार्य है। पिरामिड एक 3-डी आकृति है जिसकी बाहरी सतह पिरामिड के तेज किनारे को बनाने वाले सामान्य बिंदु पर त्रिकोणीय मिलती है। पिरामिड का आयतन उसके आधार के प्रकार पर निर्भर करता है। पिरामिड विभिन्न प्रकार के आधारों

  1. QuickSort के लिए C++ प्रोग्राम?

    क्विकसॉर्ट एक छँटाई तकनीक है जो एक क्रमबद्ध सूची (सरणी) को क्रमबद्ध करने के लिए तुलना का उपयोग करती है। Quicksort को पार्टीशन एक्सचेंज सॉर्ट के रूप में भी जाना जाता है। यह एक स्थिर प्रकार नहीं है, क्योंकि समान प्रकार की वस्तुओं का सापेक्ष क्रम संरक्षित नहीं है। क्विकसॉर्ट एक सरणी पर काम कर सकता है,