gpt4 book ai didi

c - 如何将结构体中的数组更改为C中的指针

转载 作者:行者123 更新时间:2023-11-30 18:46:32 24 4
gpt4 key购买 nike

我有结构和我的功能:

#define MAX 4096
typedef struct{
char comment[40];
int nbpts;
float time[4096];
float value[4096];
} trace;
void simuTrace(int tmax, float dt, float params[], trace* uneTrace){
int i = 0;
float v = 0, w = 0, dv = 0, dw = 0, t = 0;
while (t<tmax && i < MAX){
dv = (params[0]-v)*(v-1)*v - w;
dw = params[4]*(params[1]*v-params[2]*w-params[3]);
v += dv*dt;
w += dw*dt;
uneTrace->time[i] = t;
uneTrace->value[i] = v;
i++;
t += dt;
}
uneTrace->nbpts = i+1;
uneTrace->comment[40]= "CommentaireDeLaTrace";
}

我想在这里更改结构,它不是限制 MAX 但我不知道如何制作。如何通过新结构更改函数中的某些值>

typedef struct{
char comment[40];
int nbpts;
float *time;
float *value;
} trace;

最佳答案

使用malloc

typedef struct{
char comment[40];
int nbpts;
float *time;
float *value;
} trace;

void simuTrace(int tmax, float dt, float params[], trace* uneTrace){
int i = 0;
float v = 0, w = 0, dv = 0, dw = 0, t = 0;
int count = tmax/dt;
uneTrace->time = malloc(count * sizeof(float));
uneTrace->value = malloc(count * sizeof(float));
while (i < count){
dv = (params[0]-v)*(v-1)*v - w;
dw = params[4]*(params[1]*v-params[2]*w-params[3]);
v += dv*dt;
w += dw*dt;
uneTrace->time[i] = t;
uneTrace->value[i] = v;
i++;
t += dt;
}
uneTrace->nbpts = i+1;
strcpy(uneTrace->comment, "CommentaireDeLaTrace");
}

关于c - 如何将结构体中的数组更改为C中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825629/

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