int main()
{
char *x = "HelloWorld";
char y[] = "HelloWorld";
x[0] = 'Z';
//y[0] = 'M';
return 0;
}
उपरोक्त प्रोग्राम में, HelloWorld
केवल-पढ़ने वाले अनुभाग (i.e स्ट्रिंग तालिका) में होगा। x
उस केवल पढ़ने वाले अनुभाग को इंगित करेगा, इसलिए उन मानों को संशोधित करने का प्रयास अपरिभाषित व्यवहार होगा।फ़ंक्शन पैरामीटर में स्ट्रिंग
लेकिन y
स्टैक में आवंटित किया जाएगा और HelloWorld
उस स्मृति में कॉपी किया जाएगा। तो वाई संशोधित ठीक काम करेगा।
निम्नलिखित कार्यक्रम में, दोनों char *arr
और char arr[]
कारणों विभाजन गलती करता है, तो सामग्री संशोधित किया गया है: String literals: pointer vs. char array
यहाँ मेरी प्रश्न है।
void function(char arr[])
//void function(char *arr)
{
arr[0] = 'X';
}
int main()
{
function("MyString");
return 0;
}
- कैसे यह समारोह पैरामीटर संदर्भ में अलग है?
- फ़ंक्शन पैरामीटर के लिए कोई मेमोरी आवंटित नहीं की जाएगी ??
कृपया अपना ज्ञान साझा करें।
संभावित डुप्लिकेट [आकार के सरणी पैरामीटर के रूप में पारित] [http: // stackoverflow।कॉम/प्रश्न/1328223/sizeof-array-pass-as-पैरामीटर) – delnan
वास्तव में सरणी पैरामीटर के आकार की चर्चा से संबंधित नहीं है। यह स्ट्रिंग अक्षर बनाम चरित्र सरणी के कॉन्स्टेस के बारे में है, जो ज्यादातर आकारों से संबंधित नहीं है। –