शायद मैं गुगलिंग के लिए बहुत डंप हूं, लेकिन मैंने हमेशा सोचा कि चार सरणी केवल शाब्दिक प्रारंभिक (char x[]="asdf";
) द्वारा समाप्त हो जाती है और मुझे आश्चर्य हुआ कि जब मैंने देखा कि ऐसा नहीं लगता है।क्या सभी चार सरणी स्वचालित रूप से निरस्त हो जाती हैं?
int main()
{
char x[2];
printf("%d", x[2]);
return 0;
}
आउटपुट: 0
चाहिए नहीं एक सरणी आकार = 2 * 2 वर्ण का आकार चार वास्तव में प्राप्त के रूप में घोषित? या मैं यहाँ कुछ गलत कर रहा हूँ? मेरा मतलब है कि एक चार सरणी को एक साधारण चार सरणी के रूप में उपयोग करना असामान्य नहीं है, न कि एक स्ट्रिंग के रूप में, या है ना?
मैंने इसके बारे में भी सोचा है, इसलिए मैंने विभिन्न आकारों के साथ सरणी बनाने की कोशिश की और सरणी हमेशा 0 के बाद थी। (मेरे नमूने में दिखाया गया 0 0 के बाद नहीं था, लेकिन आकार के साथ एक सरणी 3 * एक ही स्थान पर चार था) – user1329846
@ user1329846: सरणी समाप्त होने के बाद मेमोरी में जो कुछ भी संग्रहीत किया जाता है, वह कंपाइलर तक होता है, आपको 0 मिल रहा है लेकिन मानक के रूप में कोई अन्य नंबर भी प्राप्त हो सकता है यदि आप इसे पढ़ने का प्रयास करते हैं स्थान सभी दांव बंद हैं। मुझे यह स्पष्ट करने दें: भले ही आप भाग्यशाली थे, हमेशा वहां 0 प्राप्त करने के लिए, आपका कोड अभी भी _undefined व्यवहार_ को ट्रिगर करता है और किसी भी समय विफल हो सकता है। –
'कुछ भी हो सकता है, यहां तक कि आपका कंप्यूटर आग पर सेट कर सकता है' का उपयोग न करने के लिए धन्यवाद। नहीं, यह नहीं कर सकता। और उन सभी भव्य उदाहरण सिर्फ बेवकूफ हैं। – jn1kk