2008-10-13 11 views
12

मेरे पास कुछ सी कोड में काफी सरल संरचना है जो केवल कुछ पॉइंटर्स रखती है और यदि संभव हो तो इसे स्थिर रूप से प्रारंभ करना चाहती है। क्या मैं और, यदि हां, तो कैसे?क्या फ़ंक्शन का उपयोग किए बिना एक कॉन्स स्ट्रक्चर प्रारंभ करना संभव है?

उत्तर

15

आप, अगर संकेत वैश्विक वस्तुओं को इंगित कर सकते हैं:

// In global scope 
int x, y; 
const struct {int *px, *py; } s = {&x, &y}; 
1

एक स्थिरांक struct केवल स्थिर प्रारंभ किया जा सकता है।

0

लेकिन अगर निम्नलिखित के रूप में कुछ struct है:

struct Foo 
{ 
    const int a; 
    int b; 
}; 

और हम गतिशील structmalloc उपयोग करने के लिए सूचक बनाना चाहते हैं, तो हम चाल खेल सकते हैं:

struct Foo foo = { 10, 20 }; 
char *ptr = (char*)malloc(sizeof(struct Foo)); 
memcpy(ptr, &foo, sizeof(foo)); 
struct Foo *pfoo = (struct Foo*)ptr; 

यह है बहुत उपयोगी है, खासकर जब कुछ फ़ंक्शन को पॉइंटर को struct Foo

पर वापस करने की आवश्यकता होती है
संबंधित मुद्दे

 संबंधित मुद्दे