Да, вы можете, но вам нужно где-то выделить память для 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);
Не забудьте free
результат вызова vec_subtraction
через некоторое время.
Если вы собираетесь выделять вне, вам нужно передать указатель на память:
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).