हाँ आप कर सकते हैं, लेकिन आपको कहीं भी result
के लिए स्मृति आवंटित करने की आवश्यकता है।
असल में, आप या तो vec_subtraction
या vec_subtraction
के अंदर मेमोरी आवंटित कर सकते हैं, यदि आप बाहर आवंटित करते हैं तो आप इसे स्थिर या गतिशील रूप से कर सकते हैं।
आप अंदर आवंटित करने के लिए जा रहा है, तो कर रहे हैं:
double *vec_subtraction (char *a, char *b, int n) {
double *result = malloc(sizeof(double)*n);
int i;
for(i=0; i<n; i++)
result[i] = a[i]-b[i];
return result;
}
और मुख्य में:
double *vec;
// ...
vec = vec_subtraction(a, b, n);
// ...
free(vec);
कुछ देर बाद vec_subtraction
करने के लिए कॉल का परिणाम free
के लिए मत भूलना।
आप आवंटित करने के लिए जा रहे हैं आप बाहर याद करने के लिए एक सूचक में पारित करने के लिए की जरूरत है:
void vec_subtraction (char *a, char *b, int n, double *result) {
int i;
for(i=0; i<n; i++)
result[i] = a[i]-b[i];
}
मुख्य में
:
// choose one of:
// double *vec = malloc(sizeof(double)*n);
// double vec[10]; // where 10= n.
vec_subtraction(a, b, n, vec);
// if you used *vec = malloc... remember to call free(vec).
स्रोत
2010-01-22 21:21:13
क्या मैं इसे मुख्य रूप से भी कर सकता हूं? सरणी असाइन करें: 'डबल * resoult = vec_subtraction (ए, बी, एन);' – Devel
रिकॉर्ड के लिए, इस तरह के vectored गणित करने का सामान्य तरीका यह है कि जहां भी परिणाम संग्रहीत किए जाते हैं, एक पॉइंटर में पास करना है (यानी ' शून्य vec_subtraction (चार * ए, चार * बी, डबल * सी, int एन); ')। यह कॉलर को बफर का पुन: उपयोग करने की अनुमति देता है, और कभी-कभी परिणाम और एक इनपुट दोनों के लिए एक ही बफर का उपयोग करता है। हमारे पास एक ऐसी परियोजना थी जिसमें अजीब असफलताएं थीं क्योंकि 'malloc()' निष्पादन समय में बहुत नोडेटर्मेनिस्टिक था। –