sizeof(void) equals 1 in C? -


संभव डुप्लिकेट:

हाय सब! मैं अपने सी कार्यक्रमों को संकलित करने के लिए जीसीसी का उपयोग कर रहा हूं, बस गलती से पता चला कि sizeof (शून्य) सी में 1 बाइट है

क्या इसके लिए कोई स्पष्टीकरण है? मैंने हमेशा इसे शून्य बताया (अगर यह वास्तव में कुछ भी नहीं स्टोर करता है)!

धन्यवाद!

यह जीसीसी के एक गैर मानक एक्सटेंशन है, लेकिन इसका तर्क है जब आप पॉइंटर अंकगणित जोड़ते हैं या एक इकाई को हटाते हैं तो वस्तु को जोड़ने या निकालने का मतलब है आकार। इस प्रकार sizeof (शून्य) को परिभाषित करना 1 के रूप में void * परिभाषित करने में मदद करता है एक बिंदु के रूप में बाइट (untyped स्मृति पता) अन्यथा आपको पॉइंटर अंकगणित जैसे p + 1 == p का उपयोग करते समय आश्चर्यजनक व्यवहार होता है जब पी शून्य * होता है।

मानक तरीका उपयोग करना होगा उस प्रकार के प्रयोजन के लिए `चार * (पॉइंटर टू बाइट)।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -