से ऐरे पॉइंटर मैं डी का उपयोग कर रहा हूं और कुछ सी पुस्तकालयों के साथ इंटरफेसिंग कर रहा हूं। नतीजतन मुझे सी (एक्स। शॉर्ट *) के लिए डी एरे को पॉइंटर्स में कनवर्ट करना होगा। वर्तमान में मैंने उन्हें इस तरह डाला:सी से डी
int[] dArray = [0, 1, 2, 3, 4];
myCFunction(cast(int*) dArray);
क्या यह असुरक्षित है? मैंने करने की कोशिश की:
myCFunction(&dArray);
लेकिन ऐसा करने से यह कार्य int * के बजाय int [] * देता है। मुझे लगता है कि C++ कुछ लोगों को इस तरह पहला तत्व ले:
myCFunction(&dArray[0]);
लेकिन उस सूचक केवल पहला तत्व को इंगित नहीं है? मैं पॉइंटर्स और संदर्भों के लिए नया हूं क्योंकि मैं जावा की दुनिया से आया हूं।
मैं एक सरणी को एक सूचक में कैसे परिवर्तित करूं ताकि मैं इसे सी फ़ंक्शन में पास कर सकूं?
सिर्फ 'myCFunction (dArray)' काम नहीं करेगा? –
किसी सरणी में तत्व स्मृति में संगत होते हैं, इसलिए '& dArray [0]' वास्तव में केवल पहले तत्व के लिए एक पता है; हालांकि, उस ऑफसेट से शेष तत्व +1, +2, आदि हैं। इसके अलावा, सरणी को पास करने से पहले तत्व को पॉइंटर में विघटित कर दिया जाता है। 'myCFunction (dArray)' या 'myCFunction (& dArray [0]) 'दोनों को – yano
@EugeneSh काम करना चाहिए। यह नहीं है संकलक शिकायत करता है कि myCFunction (int *) पैरामीटर myCFunction (int []) स्वीकार नहीं करता है; – jython234