在函数内部使用 realloc

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)

我知道这行不通,因为我可能需要使用指向指针的指针,但我无法解析要在函数内部和外部使用的指针、指针到指针和地址表示法的哪种组合。

任何简单的建议表示赞赏!

sim*_*onc 6

你需要传递一个指向一个指针的指针 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)