Берем абстрактный пример:
void Line(coord_t start, int len, int color, param_t *window);
...
Line({10, 20}, 50, RED, &win);
Line({75, a1}, -15, GREEN, &win);
Line({a1, b1}, 77, BLUE, &win);
И параметров немного, и понятно всё, и компактно.
Тот же самый пример, но с одним параметром в виде упакованной структуры:
param.coord.x = 10;
param.ccord.y = 20;
param.len = 50;
raram.color = RED;
param.window = &win;
Line(¶m);
param.coord.x = 75;
param.coord.y = a1;
param.len = -15;
param.color = GREEN;
Line(¶m);
param,coord.x = a1;
param.coodr.y = b1;
param.len = 77;
param,color = BLUE;
Line(¶m)
Фуух, я конечно не кодописатель, поэтому заманался во втором случае буковки печатать, особенно со смартфона, ё.
Надо во всем иметь разумный подход и гибкую соображаловку.
Почему в то время этот, как ево, Страус... (я знаю, кто это такой!) топил за один параметр в виде указателя на структуру. Да потому, что в то время вычислительные ядра имели мало регистров, а все эти параметры передаются через регистры. И ясен пень, чем больше параметров, тем больше регистров задйствуются. Но в современном железе - не повод отказываться от 3-4-5 параметров, если так будет лучше. И повторюсь, во всем должен быть разумный подход! И мышление программиста (не кодописателя) должно быть гибким. Тот или иной подход применяется конкретно по обстановке. Так понятнее?