2013-06-27 5 views
6

मैं एक GeomagnetismLibrary और समारोह घोषणाओं में से एक का उपयोग कर रहा एक प्रारूपसी घोषणा डिकोडिंग और बनाने उपयोग

int MAG_robustReadMagModels(char *filename, MAGtype_MagneticModel *(*magneticmodels)[], int array_size) 

सरलता के लिए मैं करने के लिए dumbed इसे नीचे है सिर्फ पर ध्यान केंद्रित मेरी लक्ष्य

void blah(int *(*a)[]) 
{ 
    (*a)[0] = malloc(sizeof(int)); 
    (**a)[0] = 12; 
} 

मैं की तरह एक चर घोषित करने के लिए इस समारोह मैं फोन करना चाहते हैं:

int *a[1]; 
blah(&a); 

एन मेरी स्थिति में ow कोई बात नहीं क्या a एक से अधिक तत्व है कभी नहीं होगा, तो मैं एक सरणी के रूप में a घोषित करने के लिए नहीं करना चाहते, बल्कि तरह

int *a; 

सिर्फ एक सूचक के रूप में वहाँ किसी भी तरह से मैं टाइप कर सकते हैं है blah पर कॉल करते समय इस चर को कास्ट या डिफरेंस करें जो वांछित के रूप में काम करेगा और segfault का कारण नहीं होगा?

इसके अलावा, आप उस प्रकार को टाइप प्रकार के संदर्भ में कैसे परिभाषित करेंगे, उदाहरण के लिए: (int *[]*)?

धन्यवाद

उत्तर

3

यह करना होगा:

int * b; 

blah((int *(*)[]) &b); 
+0

हाँ यह वास्तव में काम करता है। धन्यवाद! – lukecampbell

+0

@ लुकेकैम्पबेल: मैं गलत था। कृपया मेरा सुधार देखें। – alk

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