संभव डुप्लिकेट:
How are string literals compiled in C?पता तुलना और स्ट्रिंग भंडारण
मैं नीचे छोटे कोड लिखा था। इस कोड में, मुझे लगता है कि पहली और दूसरी "हैलो" स्ट्रिंग का पता तुलना की जाएगी। मैं इसमें उलझन में हूं। पहले देखो में, मैंने सोचा था कि दोनों तारों को केवल स्मृति में संग्रहीत किया जाएगा और इस प्रकार अलग-अलग पता होगा। लेकिन निष्पादन के बाद "बराबर" मुद्रित हो गया।
जब मैंने objdump देखा, तो मैं स्ट्रिंग हैलो को देखने में सक्षम नहीं था। मैं समझता हूं कि मैंने उन्हें स्टोर करने के लिए एक चर नहीं लिया है, लेकिन "हैलो" कहाँ संग्रहित किया जाएगा।
क्या इसे स्टैक पर संग्रहीत किया जाएगा ?? या क्या यह कोड सेगमेंट पर संग्रहीत किया जाएगा ??
#include<stdio.h>
int main()
{
if ("hello" == "hello")
printf("\n equal ");
else
printf("\n not equal");
return 0;
}
जब मैं if ("hello" == "hell1")
को अगर हालत बदल गया है, "इसके बराबर नहीं" मुद्रित कर ली। फिर, स्ट्रिंग्स कहां और कैसे संग्रहीत हो रहे हैं। क्या इसे स्टैक पर संग्रहीत किया जाएगा ?? या क्या यह कोड सेगमेंट पर संग्रहीत किया जाएगा ??
यदि कोई यहां मुझे विस्तृत उत्तर देता है तो मैं वास्तव में सराहना करता हूं। धन्यवाद
यदि आप इसके डिस्सेप्लर देखते हैं, तो आप देखेंगे कि बिल्कुल 'if' समकक्ष नहीं है! अनुकूलित किया गया! –
संभावित डुप्लिकेट [एक मूल प्रश्न: सी में स्ट्रिंग अक्षर कैसे संकलित होते हैं?] (Http://stackoverflow.com/q/6680819/), [क्यों "ए"! = "ए" सी में है?] (Http : //stackoverflow.com/q/4843640/), [सी स्ट्रिंग अक्षर: वे कहां जाते हैं?] (http://stackoverflow.com/q/2589949/) – outis