के मैं अपने सी कार्यक्रम में निम्न कोड है मान लेते हैं:printf() प्रिंट पूरे सरणी
#include <stdio.h>
void PrintSomeMessage(char *p);
int main(int argc, char *argv[]) {
char arr[10] = "hello";
PrintSomeMessage(&arr[0]);
return 0;
}
void PrintSomeMessage(char *p)
{
printf("p: %s",p);
}
क्यों इस के उत्पादन में पूरे शब्द "नमस्ते" एक ही चरित्र के बजाय होगा "ज "?
मुझे लगता है कि, अगर मैं फॉर्मेटर में "%c"
डालता हूं, तो यह केवल एक ही अक्षर प्रिंट करेगा। लेकिन फिर भी, इस पते में प्रत्येक पत्र के लिए स्मृति पता अलग है। कृपया, कोई मुझे यह समझाओ?
तक प्रिंट करता है [मुझे प्रिंट करने से पहले सी में वर्ण सूचक को अव्यवस्थित करने की आवश्यकता क्यों नहीं है?] (Http://stackoverflow.com/questions/15841696/why-dont-i-need-to-dereference-a-character-pointer-in-c-before-printing-it/15841740#15841740) –
नोट: '% c' doesn ' टी को मुद्रित करने के लिए पते की आवश्यकता है जहां '% s' को यात्रा करने की आवश्यकता है \ @' के रूप में @Rohan उत्तर में समझाया गया है। –
@SuvP 'printf()' '% c' की आवश्यकता ** ** ** परिवर्तनीय, यह काफी स्पष्ट/तार्किक है कि इसे ** एकल ** तत्व के लिए मूल्य तक पहुंचने के लिए पते की आवश्यकता नहीं है (मूल्य से गुजर सकता है) । स्ट्रिंग को मुद्रित करने के लिए कहां से यात्रा के लिए पते की आवश्यकता होती है जब तक \ \' मुठभेड़ के समान रोहन ने अपने जवाब में समझाया। इसके अतिरिक्त मेमोरी स्कैनफ में स्टोर करने के लिए '% c' –