यदि डेटा एक स्थिर या वैश्विक चर है, तो यह डिफ़ॉल्ट रूप से शून्य-भरा है, इसलिए इसे घोषित करें myStruct _m;
यदि डेटा एक स्थानीय चर या ढेर-आवंटित क्षेत्र है, तो इसे इस memset
तरह से साफ़ करें :
memset(&m, 0, sizeof(myStruct));
वर्तमान संकलक (जैसे हाल के संस्करण gcc
) व्यवहार में काफी अच्छी तरह से अनुकूलन करते हैं। यह तभी काम करता है जब सभी शून्य मान (शून्य बिंदु और फ्लोटिंग पॉइंट शून्य शामिल होते हैं) को सभी शून्य बिट्स के रूप में दर्शाया जाता है, जो कि उन सभी प्लेटफार्मों पर सच है जिनके बारे में मैं जानता हूं (लेकिन सी मानक परमिट कार्यान्वयन जहां यह गलत है; मुझे ऐसा कोई कार्यान्वयन नहीं पता है) ।
आप शायद कोड myStruct m = {};
या myStruct m = {0};
(भले ही पहले सदस्य myStruct
एक अदिश राशि नहीं है)।
मेरी भावना यह है कि memset
स्थानीय संरचनाओं के लिए उपयोग करना सबसे अच्छा है, और यह इस तथ्य को बेहतर ढंग से बताता है कि रनटाइम के दौरान कुछ करना पड़ता है (आमतौर पर, वैश्विक और स्थैतिक डेटा को संकलित समय पर आरंभीकृत किया जा सकता है, बिना किसी लागत के) ।
= {};
रहा हूं लेकिन मुझे यकीन नहीं है कि यह वैध है।