How does c assign values to an array of pointers when it is first defined? -
मेरे पास इंट पॉइंटर्स की एक सरणी है।
int * ints [3];
इस सरणी को परिभाषित करते समय स्मृति का क्या होता है? आरम्भिक पॉइंटर मूल्य क्या संग्रहीत होंगे? जब मैं किसी मूल्य के dereference की कोशिश, मैं एक विभाजन त्रुटि मिलता है, जो मुझे बताता है कि मान मनमाने हैं।
यह सरणी के भंडारण पर निर्भर करता है।
-
अगर इसमें स्थिर भंडारण है, यानी किसी भी फ़ंक्शन के बाहर घोषित किया गया है या एक फ़ंक्शन में स्थिर
के साथ घोषित किया गया है, तो सभी तत्व नल होंगे
-
यदि इसे फ़ंक्शन में घोषित किया जाता है, बिना स्थिर
, तो इसमें स्वचालित संग्रहण होगा और आरंभिक मान अनिश्चित होंगे
मानक इस मामले में काफी स्पष्ट और उपयोगी होता है:
यदि कोई ऑब्जेक्ट स्वचालित स्टोरेज अवधि को स्पष्ट रूप से प्रारंभ नहीं किया गया है, तो इसका मान अनिश्चित है यदि कोई ऑब्जेक्ट जिसमें स्थिर या धागा स्टोरेज अवधि होती है तो उसे स्पष्ट रूप से आरम्भ नहीं किया जाता है, तो:
- यदि इसमें सूचक प्रकार है, तो इसे एक अशक्त सूचक के लिए आरम्भ किया जाता है;
- यदि यह अंकगणित प्रकार है, यह (सकारात्मक या अहस्ताक्षरित) शून्य पर आरंभ किया जाता है;
- यदि यह एक समग्र है, तो प्रत्येक सदस्य इन नियमों के अनुसार आरम्भिक रूप से आरम्भ किया जाता है, और किसी भी पैडिंग को शून्य पर आरंभ किया जाता है
बिट्स;
Comments
Post a Comment