ट्रेलिंग ऐरे इडियॉम क्या है?ट्रेलिंग ऐरे इडियॉम
पीएस: इस शब्द को गुगल करने से वेक्टरों को पीछे की ओर सरणी मुहावरे का उपयोग करके कार्यान्वित किया जाता है, इस प्रकार वे वेक्टर ऑब्जेक्ट के पते को बदलने के बिना आकार बदलने योग्य नहीं होते हैं।
ट्रेलिंग ऐरे इडियॉम क्या है?ट्रेलिंग ऐरे इडियॉम
पीएस: इस शब्द को गुगल करने से वेक्टरों को पीछे की ओर सरणी मुहावरे का उपयोग करके कार्यान्वित किया जाता है, इस प्रकार वे वेक्टर ऑब्जेक्ट के पते को बदलने के बिना आकार बदलने योग्य नहीं होते हैं।
आप अनुगामी सरणी मुहावरा में उल्लेख किया है इसका मतलब यह तो GCC source code (जहां आपकी बोली से आता है), यह वर्ष सी चाल का उल्लेख करने के लिए एक गतिशील सरणी लागू करने के लिए लगता है:
typedef struct {
/* header */
size_t nelems;
/* actual array */
int a[1];
} IntVector;
जहां एक सरणी होगा
IntVector *make_intvector(size_t n)
{
IntVector *v = malloc(sizeof(IntVector) + sizeof(int) * (n-1));
if (v != NULL)
v->nelems = n;
return v;
}
यदि इसका जिक्र है, तो अधिक सामान्य शब्द [संरचना हैक] (http://stackoverflow.com/q/3711233/168225) है। –
@ जॉर्ज: मुझे नहीं लगता (हालांकि मुझे यकीन नहीं है) यह अन्यथा शब्द का उल्लेख कर रहा है (जैसा आपने बताया है) 'स्ट्रक्चर हैक' का उपयोग 'ट्रेलिंग सरणी मुहावरे 'के स्थान पर किया जाएगा। –
@ प्र्रासून: लेखक ने अभी एक अलग शब्द का उपयोग किया होगा, पहली बार ऐसा नहीं होगा। "स्ट्रक्चर हैक" वैसे भी थोड़ा अनौपचारिक लगता है। –
ऐसा लगता है कि structs में सरणी का संदर्भ है, जिसमें एक चरणीय सरणी आकार हो सकता है। देखें:
http://blogs.msdn.com/b/oldnewthing/archive/2004/08/26/220873.aspx और http://sourceware.org/gdb/current/onlinedocs/gdbint/Support-Libraries.html
एक और टिप, यदि आप एक अभिव्यक्ति के लिए गूगल में "अभिव्यक्ति डाल" की तरह "सरणी अनुगामी" इस आप अधिक विशिष्ट परिणाम प्राप्त होंगे। Google पीछे के सरणी के बारे में जानता है।
+1 एमएसडीएन आलेख के लिंक के लिए +1, दिलचस्प सामग्री । –
के साथ बनाया मुझे लगता है कि क्या मतलब है:
struct foo {
... some data members, maybe the length of bar ...
char bar[]; /* last member of foo, char is just an example */
};
इसका उपयोग malloc(sizeof(struct foo)+LEN)
के साथ आवंटित करके किया जाता है, जहां एलईएन bar
की वांछित लंबाई है। इस तरह से केवल एक मॉलोक की आवश्यकता है। []
का उपयोग केवल अंतिम संरचना सदस्य के साथ किया जा सकता है।
और, जैसा कि मैं जीसीसी दस्तावेज़, struct foo
को समझता हूं, वैसे ही केवल (उचित रूप से) किसी अन्य संरचना के अंतिम सदस्य के रूप में उपयोग किया जा सकता है, क्योंकि भंडारण आकार निश्चित नहीं है - या सूचक के रूप में।
इसे "लचीला सरणी सदस्य" कहा जाता है और सी 99 मानक (§6.7.2.1P16) में है। – aib
जैसा कि अन्य ने नीचे दिए गए कुछ उत्तरों पर टिप्पणी की है, तो आपको _flexible array member_ की खोज करने के लिए बेहतर भाग्य होगा। – ninjalj
ध्यान दें कि, सख्त परिभाषा के अनुसार, यह _UB_: http://stackoverflow.com/questions/3711233/is-the-struct-hack-technically-undefined- व्यवहार – sbi