इस कोड का उत्पादन "पी = हैलो दुनिया":हम स्ट्रेटर पॉइंटर को स्ट्रिंग क्यों नहीं कॉपी कर सकते हैं जब हम सीधे स्ट्रिंग असाइन कर सकते हैं?
#include "stdio.h"
#include "string.h"
int main(){
char *p;
p="hello world";
printf("p is %s \n",p);
return 0;
}
लेकिन इस कोड एक विभाजन गलती का उत्पादन:
#include "stdio.h"
#include "string.h"
int main() {
char *p;
strcpy(p,"hello");
printf("p is %s \n",p);
return 0;
}
और इस कोड को "पी = हैलो"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main() {
char *p;
p=(char*)malloc (10);
strcpy(p,"hello");
printf("p is %s \n",p);
return 0;
का उत्पादन }
फिर, यह क्यों काम करेगा? # शामिल # शामिल पूर्णांक main() { चार * p; पी = "हैलो वर्ल्ड"; printf ("पी% s \ n", पी); वापसी 0; } आउटपुट: पी हैलो वर्ल्ड –
aks
आप पहले पी में कुछ भी नहीं कर रहे हैं। आप उस स्ट्रिंग का पता शाब्दिक पी को संबोधित कर रहे हैं। यही कारण है कि यह काम करता है। – Amy
पी के लिए शाब्दिक स्ट्रिंग का पता निर्दिष्ट करके, आप स्मृति में उस स्थान को निर्दिष्ट कर रहे हैं जो पी इंगित कर रहा है। – jschmier