Массив p
является локальным для функции createPoint
и выходит из области действия при выходе из функции. Это означает, что изменения, сделанные вами в одном вызове функции, не будут видны в следующем.
Кроме того, поскольку вы не инициализируете значения p
, вы не можете зависеть от них, содержащих NaN
. Фактически, попытка прочитать неинициализированную переменную вызывает неопределенное поведение .
Ваш массив 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;
}