我目前正在为C编程课做作业。到目前为止,除了我将本地结构变量传递给不同的函数之外,一切都很顺利。 根据作业,我无法使结构全局化。
以下是我在创建结构的主要功能中所拥有的内容:
struct data
{
float lat;
float lon;
float depth;
float mag;
};
struct data quake[FileLength];
其中FileLength先前在main函数中定义。
" quake"中的字段之后在主函数中填充。
以下是我需要将结构传递给的函数:
void OverallMinMax(struct* data quake, float* MinLat,float* MaxLat,float* MinLon,float* MaxLon, int* FileLength)
{
int i;
for (i = 0; i < FileLength; i++)
{
if (quake[i].lat < MinLat)
{
MinLat = quake[i].lat;
}
if (quake[i].lat > MaxLat)
{
MaxLat = quake[i].lat;
}
if (quake[i].lon < MinLon)
{
MinLon = quake[i].lon;
}
if (quake[i].lon > MaxLat)
{
MaxLat = quake[i].lon;
}
}
}
此功能的目标是查找从文件中获取的经度和纬度数据的最小值和最大值。但是,无论我如何尝试通过&#34; struct data quake&#34;,它都不起作用。我尝试过的大多数方法都会导致编译器识别出“地震”和“#34;但不是其中的数据,例如quake.lat
会抛出错误,表示无法识别lat
。我在上面的代码中使用它的方式并没有抛出这些错误,而是将expected '{' before '*' token
作为错误放在定义函数的行中,参考&#34; *&#34;在&#34; struct&#34;。
任何人都可以提供有关我应该如何做到这一点的见解吗?
答案 0 :(得分:1)
struct* data quake
这是错误的。你想要:
struct data *quake
struct * data
不是C中的类型。
然后你还有其他问题:
if (quake[i].lat < MinLat)
MinLat
被声明为指针,因此您必须使用*MinLat
。但如果您没有充分的理由在函数中传递指针,只需将MinLat
声明为float
而不是float *
。