JWD*_*WDN 3 c function dynamic-memory-allocation
抱歉,我知道很多相关的问题已经被问到了,所以我会保持简单。
尽管进行了多年的编程,我还是找不到在函数内调整和修改数组(或多个)数组大小的正确语法。例如,假设我想要一个函数用一组“n”个数字填充数组,其中“n”在数组中定义:
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)
}
Run Code Online (Sandbox Code Playgroud)
我知道这行不通,因为我可能需要使用指向指针的指针,但我无法解析要在函数内部和外部使用的指针、指针到指针和地址表示法的哪种组合。
任何简单的建议表示赞赏!
你需要传递一个指向一个指针的指针 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;
}
Run Code Online (Sandbox Code Playgroud)