gpt4 book ai didi

c - 无法通过指针索引访问结构体数组成员

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

我正在尝试从全局结构数组访问数据。但是以下应用程序崩溃了。

#include <stdio.h>

typedef struct {
char *fruit;
int score;
} t_fruitdata;

static t_fruitdata fruittable[] = {
{"Apple", 100},
{"Banana", 240},
{"Carrot", 40}
};

void main()
{
int table_len = sizeof(fruittable) / sizeof(t_fruitdata);
for (int i = 0; i < table_len; ++i)
{
t_fruitdata *fruitdata = fruittable + i*sizeof(t_fruitdata);
printf("At index %i fruit %s has a score of %i\n",
i,
fruitdata->fruit,
fruitdata->score);
}
}

输出:

At index 0 fruit Apple has a score of 100
[program terminates here]

我想我偶然发现了一些未定义的行为?但我以前见过在堆栈溢出时推荐这种技术。我在 Windows 上使用 cl 使用 Visual Code 2017 进行编译。

最佳答案

t_fruitdata *fruitdata = Fruittable + i*sizeof(t_fruitdata); 中,您没有正确递增指针。

#include <stdio.h>

typedef struct {
char *fruit;
int score;
} t_fruitdata;

static t_fruitdata fruittable[] = {
{"Apple", 100},
{"Banana", 240},
{"Carrot", 40}
};

void main()
{
int table_len = sizeof(fruittable) / sizeof(t_fruitdata);
t_fruitdata *fruitdata = fruittable;

for (int i = 0; i < table_len; ++i)
{
printf("At index %i fruit %s has a score of %i\n",
i,
fruitdata->fruit,
fruitdata->score);
fruitdata++;
}
}

关于c - 无法通过指针索引访问结构体数组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546380/

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