वर्तमान में मैं बार्न स्ट्रास्ट्रुप द्वारा "सी ++ का दौरा" पढ़ रहा हूं। बात यह है कि मायने रखती है:ठीक से nullptr का उपयोग कैसे करें?
int count_x(char* p, char x)
// count the number of occurrences of x in p[]
// p is assumed to point to a zero-terminated array of char (or to nothing)
{
if (p == nullptr) return 0;
int count = 0;
for (; p != nullptr; ++p)
if (*p == x)
++count;
return count;
}
मेरे अपने मुख्य:
int main(){
char* str = "Good morning!";
char c = 'o';
std::cout << count_x(str, c) << std::endl;
return 0;
}
जब मैं कार्यक्रम चलाने यह मैं दुर्घटनाओं "संकेत दिए गए, सरणियों और संदर्भ" पर वह इस तरह nullptr
उपयोग के बारे में उदाहरण दिया एक अपवाद लाइन
if (*p == x)
पर फेंके गए हो, तो मैं पाश को बदलने के लिए इस तरह बनना:
for (; *p; p++)
if (*p == x)
++count;
अब सब ठीक काम करता है! मैं एमएसवीसी ++ 14.0 का उपयोग कर रहा हूँ।
- एक ही कोड मैं
ideone
पर चलता था मैं एक अपवाद नहीं मिलता है, लेकिन परिणाम हमेशा0
है जो3
होना चाहिए:
@ डीईडीई: हाँ मैंने अभी कोड कॉपी और चिपकाया है। जो मैं जोड़ता हूं वह मुख्य कोड है। – WonFeiHong
@DeiDei: यह कैसे सही होना चाहिए: '* p! = Nullptr'? जैसा कि मुझे लगता है कि 'nullptr' केवल पतों के पॉइंटर्स के लिए है, वे उस बिंदु पर इंगित नहीं करते हैं, जिसे वे संबोधित करते हैं। – WonFeiHong
मुझे "सी ++ का दौरा" के लिए किसी भी इरेटा में यह नहीं मिला। आपको बजरने को लिखना चाहिए और उसे बताना चाहिए। यह एक गलती है। – StoryTeller