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

सी ++ में नलप्टर वास्तव में क्या है?

इस खंड में हम C++ में nullptr देखेंगे। नलप्टर सूचक अक्षर को दर्शाता है। यह std::nullptr_t प्रकार का प्रचलन है। इसमें किसी भी सूचक प्रकार के nullptr से शून्य सूचक मान और सदस्य प्रकार के किसी भी सूचक में अंतर्निहित रूपांतरण संपत्ति है। आइए इस अवधारणा को समझने के लिए एक कार्यक्रम देखें।

उदाहरण

#include<iostream>
using namespace std;
int my_func(int N){ //function with integer type parameter
   cout << "Calling function my_func(int)";
}
int my_func(char* str) { //overloaded function with char* type parameter
   cout << "calling function my_func(char *)";
}
int main() {
   my_func(NULL); //it will call my_func(char *), but will generate compiler error
}

आउटपुट

[Error] call of overloaded 'my_func(NULL)' is ambiguous
[Note] candidates are:
[Note] int my_func(int)
[Note] int my_func(char*)

तो उपरोक्त कार्यक्रम में क्या समस्या है? NULL को आमतौर पर (void*)0 के रूप में परिभाषित किया जाता है। हमें NULL को इंटीग्रल टाइप में बदलने की अनुमति है। तो my_func(NULL) का फंक्शन कॉल अस्पष्ट है।

यदि हम NULL के स्थान पर nullptr का उपयोग करते हैं, तो हमें नीचे जैसा परिणाम मिलेगा -

उदाहरण

#include<iostream>
using namespace std;
int my_func(int N){ //function with integer type parameter
   cout << "Calling function my_func(int)";
}
int my_func(char* str) { //overloaded function with char* type parameter
   cout << "calling function my_func(char *)";
}
int main() {
   my_func(nullptr); //it will call my_func(char *), but will generate compiler error
}

आउटपुट

calling function my_func(char *)

हम नलप्टर का उपयोग उन सभी जगहों पर कर सकते हैं जहाँ NULL की अपेक्षा की जाती है। NULL की तरह, nullptr को भी किसी भी पॉइंटर टाइप में बदला जा सकता है। लेकिन यह पूर्ण रूप से NULL जैसे अभिन्न प्रकार में परिवर्तनीय नहीं है।


  1. सी ++ में मैट्रिक्स का निर्धारक?

    मैट्रिक्स के निर्धारक की गणना केवल एक वर्ग मैट्रिक्स के लिए की जा सकती है, पहली पंक्ति कोफ़ैक्टर को संबंधित कॉफ़ैक्टर के निर्धारक द्वारा गुणा करके और अंतिम परिणाम प्राप्त करने के लिए वैकल्पिक संकेतों के साथ जोड़कर। $$A =\begin{bmatrix}a &b &c\\d &e &f \\g &h &i \\ \end{bmatrix}|A| =a(ei-fh)-b(di-gf

  1. C++ में रेंज एडिशन

    मान लीजिए कि हमारे पास आकार n की एक सरणी है और इसे 0 के साथ आरंभीकृत किया गया है और हमारे पास एक मान k भी है, हम k अद्यतन संचालन करेंगे। प्रत्येक ऑपरेशन को ट्रिपलेट के रूप में दर्शाया जाएगा:[स्टार्टइंडेक्स, एंडइंडेक्स, इंक] जो सबरे ए के प्रत्येक तत्व को बढ़ाता है [स्टार्टइंडेक्स ... एंडइंडेक्स] (स्ट

  1. C++ . में रेखा परावर्तन

    मान लीजिए कि हमारे पास 2D तल पर n बिंदु हैं, हमें यह जांचना है कि क्या y-अक्ष के समानांतर कोई रेखा है जो दिए गए बिंदुओं को सममित रूप से दर्शाती है, दूसरे शब्दों में, जांचें कि क्या कोई ऐसी रेखा मौजूद है जो दी गई रेखा पर सभी बिंदुओं को प्रतिबिंबित करने के बाद मूल बिंदुओं का सेट वही होता है जो प्रतिबि