我正在创建一个包含空间中站点位置的数组。因此,对于array[2]
,我也想说array[2].num = 2
,我希望每个站点都有一个从0到N-1的唯一站点编号num
。为array[i].num
输出不同的i值得到0、1、32767。而对于增加i,我希望看到从0到N-1的递增值。
我对结构非常陌生,因此,如果您能解释我在哪里犯错误,我将非常感谢您作为新手程序员的帮助。
typedef struct site_t
{
int num; // want to add more varaibels later hence type struct //
} site;
site fillStruct( site[], int);
int main()
{ int i;
const int N = 20;
site array[N];
fillStruct(array, N);
for (i = 0; i < N; i++) {
printf("location of site %d\n", array[i].num);
}
}
site fillStruct(site array[], int size) {
for (int k = 0; k < size; k++) {;
array[k].num = k;
return array[k];
}
}
如果我正确理解了您的问题,我认为您的问题来自fillStruct()
函数。此函数中的循环仅执行一次,而不是N次。您永远不会超过k = 0,因此将num
成员设置为array[0]
,然后返回array[0]
。
返回主功能时,将精确打印array[0]
的位置,但是数组中的后续站点编号只是随机的未初始化值。
相反,您希望return语句位于循环块之外,因此该函数应类似于...
site fillStruct(site array[], int size) {
int k;
for (k = 0; k < size; k++) {;
array[k].num = k;
}
return array[k-1]; // Returns the last site in the array
}
现在,当您返回主功能时,将有20个站点,编号为0到19(对于N = 20)。
还请注意,在您提供的代码中,您没有使用fillStruct()
的返回值。
希望有帮助,如果我错过了什么,请告诉我。