gpt4 book ai didi

C 结构变量访问

转载 作者:行者123 更新时间:2023-11-30 16:34:40 24 4
gpt4 key购买 nike

我需要一些访问结构中数组的帮助。我的程序编译时没有任何错误,但当我尝试更改结构中的某些值时会停止。我对问题所在感到困惑,非常感谢一些帮助。

全局结构声明:

typedef struct Data {
float timestamp[array_length];
float azimuth[array_length];
float distance[array_length];
float signal_strength[array_length];
} Datain;

Datain *dataptr;

这是我尝试将数组初始化为我希望的值:

for (i = 0; i <  array_length; i++)
{
dataptr->timestamp[i]=-100;
dataptr->distance[i]=-100;
dataptr->azimuth[i]=-100;
dataptr->signal_strength[i]=-100;
}

让我知道你的想法

最佳答案

dataptr 是一个未初始化的指针,它指向任何地方。你必须为其分配内存:

dataptr = malloc(sizeof *dataptr); // or malloc(size * sizeof *dataptr)
// for allocating size Datain objects
if(dataptr == NULL)
{
// error handling
// do not continue
}

for(i=0;i<array_length;i++)
{
dataptr->timestamp[i]=-100;
dataptr->distance[i]=-100;
dataptr->azimuth[i]=-100;
dataptr->signal_strength[i]=-100;
}

/*
or if you do the malloc(size * sizeof *dataptr)

for(size_t i = 0; i < size; ++i)
{
for(size_t j = 0; j < array_length; ++j)
{
dataptr[i].timestamp[j]=-100;
dataptr[i].distance[j]=-100;
dataptr[i].azimuth[j]=-100;
dataptr[i].signal_strength[j]=-100;
}
}
*/

以后您不必忘记释放内存

free(dataptr);

如果 dataptr 是一个单一的对象,那么你不需要声明它作为指针:

Datain dataptr; // no * here

然后在函数中

for(i=0;i<array_length;i++)
{
dataptr.timestamp[i]=-100;
dataptr.distance[i]=-100;
dataptr.azimuth[i]=-100;
dataptr.signal_strength[i]=-100;
}

在这里您不需要释放内存。

关于C 结构变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49246418/

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