gpt4 book ai didi

c - 有没有办法根据 t 确定数组的大小

转载 作者:行者123 更新时间:2023-11-30 15:49:02 25 4
gpt4 key购买 nike

我编写了一个函数,用于计算数组与该数组本身之间的外部差异,并且仅保存那些正的结果(请参见下面的代码)

void outer_pos(double *x, int *n, double *output){
int i, j, l;
for(i=0, l=0; i<*n; i++){
for(j=0; j<*n; j++){
if((x[j]-x[i])>0){
output[l+1]=x[j]-x[i];
output[0]=(double)(++l);
}
}
}
}

然后,在下面的函数中,我调用 outer_pos。一个问题是数组 xouter 可能包含绑定(bind)值。没有绑定(bind)值时,正差的数量为 (nsamp)(*nsamp-1)/2,但使用绑定(bind)值时,实际数量会更小。所以我想知道是否有任何方法可以声明 v1v2,使其大小取决于 outer_pos 的结果。我主要使用 R,它不需要初始化数组,所以我不确定如何在 C 中完成此操作。

void foo(double *x, double *y, int *nsamp){
int i, j, k, oper=2, l;
double* result=malloc(sizeof(double)*((*nsamp)*(*nsamp-1)/2 + 1));
double* xouter=malloc(sizeof(double)*(*nsamp));

for(i=0;i<*nsamp;i++)
xouter[i]=x[i]+y[i];

outer_pos(xouter, nsamp, &result[0]);

free(xouter);
.
.
.
.
}

最佳答案

  1. 尝试 calloc() 而不是 malloc 并为outer_pos()内部的输出分配内存

    void outer_pos(double *x, int *n, double *output){
    int i, j, l;
    &output[0]=malloc(sizeeof(double));
    for(i=0, l=0; i<*n; i++){
    for(j=0; j<*n; j++){
    if((x[j]-x[i])>0){
    &output[l+1]=malloc(sizeeof(double));
    output[l+1]=x[j]-x[i];
    output[0]=(double)(++l);
    }
    }
    }
    }

关于c - 有没有办法根据 t 确定数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com