मैं निम्नलिखित कोड मैं सी में उलटे क्रम में एक स्ट्रिंग मुद्रण प्रत्यावर्तन प्रयोग करने के लिए में आए देख रहा था:यह सी कोड कैसे काम करता है?
void ReversePrint(char *str) { //line 1
if(*str) { //line 2
ReversePrint(str+1); //line 3
putchar(*str); //line 4
}
}
मैं अपेक्षाकृत सेल्सियस के लिए नया हूँ और मेरी समझ से लाइन 2. *str
से उलझन में हूँ अपसंदर्भन है सूचक और वर्तमान स्थिति में स्ट्रिंग के मान वापस करना चाहिए। लेकिन यह एक सशर्त बयान के लिए तर्क के रूप में कैसे प्रयोग किया जा रहा है (जो एक बूलियन दाएं को छोड़कर चाहिए?)? लाइन 3 में, सूचक हमेशा अगले ब्लॉक (4 बाइट्स को इसके int के बाद से) में बढ़ाया जाएगा ... तो क्या स्ट्रिंग के अंत के बाद अगली मेमोरी ब्लॉक में डेटा होने पर यह कोड विफल हो सकता है?
अद्यतन: तो सी में कोई बूलियन प्रकार सही नहीं है? एक सशर्त बयान 'झूठा' का मूल्यांकन करता है यदि मूल्य 0 है, और अन्यथा 'सत्य' है?
लड़का, मुझे उम्मीद है कि उत्पादन कोड नहीं था! :) –
आश्चर्य है कि यह शोषण से पहले कितनी देर तक होनी चाहिए। – Skurmedel
शायद बहुत लंबा ... लेकिन फिर भी। – Skurmedel