My apologies, I know many related questions have already been asked, so I will keep it very simple.
Despite some years of programming I cannot find the correct syntax for resizing and modifying an array (or several) inside a function. For example, say I want a function to fill an array with a set of "n" numbers, where "n" is defined within the array:
int main(int argc, char *argv[]) {
float *data = NULL
int n = myfunction(data);
for(i=0;i<n;i++) printf("%f\n",data[i]);
free(data);
}
int myfunction(float *input) {
int i,n=10;
input = (float *) realloc( input, n*sizeof(float) );
if(input!=NULL) {
for(i=0;i<n;i++) input[i] = (float)i;
return(n);
else return(-1)
}
I know this will not work, as I probably need to use a pointer to a pointer, but I cannot resolve which combination of pointers, pointers-to-pointers, and address notation to use inside and outside the function to use.
Any simple suggestions appreciated!
You need to pass a pointer to a pointer to myFunction
#include <stdio.h>
#include <stdlib.h>
int myfunction(float **input) {
int i,n=10;
*input = realloc( *input, n*sizeof(float) );
if(*input!=NULL) {
for(i=0;i<n;i++) (*input)[i] = (float)i;
return(n);
}
else return(-1);
}
int main(int argc, char *argv[]) {
float *data = NULL;
int n = myfunction(&data);
int i;
for(i=0;i<n;i++) printf("%f\n",data[i]);
free(data);
return 0;
}