सिर्फ gdb में निम्नलिखित निरीक्षण किया गया:सी अनुकूलन
char *a[] = {"one","two","three","four"};
char *b[] = {"one","two","three","four"};
char *c[] = {"two","three","four","five"};
char *d[] = {"one","three","four","six"};
और मैं निम्नलिखित हो:
(gdb) p a
$17 = {0x80961a4 "one", 0x80961a8 "two", 0x80961ac "three", 0x80961b2 "four"}
(gdb) p b
$18 = {0x80961a4 "one", 0x80961a8 "two", 0x80961ac "three", 0x80961b2 "four"}
(gdb) p c
$19 = {0x80961a8 "two", 0x80961ac "three", 0x80961b2 "four", 0x80961b7 "five"}
(gdb) p d
$20 = {0x80961a4 "one", 0x80961ac "three", 0x80961b2 "four", 0x80961bc "six"}
मैं वाकई हैरान है कि स्ट्रिंग संकेत समकक्ष के लिए ही कर रहे हैं हूँ शब्द। मैंने सोचा होगा कि प्रत्येक स्ट्रिंग को अपनी खुद की याददाश्त को स्टैक पर आवंटित किया जाएगा चाहे वह किसी अन्य सरणी में एक स्ट्रिंग के समान था।
क्या यह किसी प्रकार के कंपाइलर अनुकूलन का उदाहरण है या क्या यह इस प्रकार की स्ट्रिंग घोषणा के लिए मानक व्यवहार है?
इस प्रश्न में "स्टैक" भी कहां से आया था? यदि आपने 'a',' b', 'c' और' d' को स्थानीय चर के रूप में घोषित किया है, तो आपको अपने प्रश्न में ऐसा कहना होगा। – AnT
हां - वे स्टैक – bph
हां पर फ़ंक्शन के भीतर घोषित ऑटो अवधि के स्थानीय चर हैं। यह संकलक अनुकूलन का एक उदाहरण है। – Jack