gpt4 book ai didi

c - 如何向结构添加多个值

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

我需要创建一个函数,可以向我的结构添加至少 10 个不同的 x,y 值

typedef struct Point
{
float x, y;

}Point;

Point createPoint(double x, double y){

Point p[10];
for (int i = 0; i < 10; ++i){
if (isnan(p[i].x) == 0){
p[i].x = x;
p[i].y = y;
}
}

for (int z = 0; z < 2; ++z){
printf("%f\n", p[0].y);
}

}

int main(){
createPoint(5, 6);
createPoint(7, 9);
return 0;
}

打印时,我在相同的数字 p[0] 处得到 2 个值,但我需要能够在不同的数字处达到不同的值

最佳答案

数组p是函数createPoint的本地数组,当函数退出时就会超出范围。这意味着您在一个函数调用中所做的更改在下一个函数调用中将不可见。

此外,由于您没有初始化 p 的值,因此您不能依赖它们包含 NaN。事实上,尝试读取未初始化的变量会调用 undefined behavior .

您的 p 数组对于 main 函数应该是全局的或本地的,以便其生命周期可以扩展到对 createPoint 的多次调用。您还应该保留一个单独的计数器,记录 p 中当前存储的元素数量,以便您可以写入下一个可用槽。

void createPoint(Point *p, double x, double y, int *count)
{
p[*count].x = x;
p[*count].y = y;
(*count)++;
}

void printPoints(Point *p, int count)
{
for (int z = 0; z < count; ++z){
printf("%f\n", p[z].y);
}
}

int main(){
Point p[10];
int count = 0;

createPoint(p, 5, 6, &count);
createPoint(p, 7, 9, &count);
printPoints(p, count);
return 0;
}

关于c - 如何向结构添加多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58794103/

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