Есть и другие способы сделать это, например, инициализация в стиле C99:
Point *test3( int x, int y, int z ) {
Point * const point = (Point *) malloc(sizeof(Point));
if (point) { // Don't write through a NULL pointer!
*point = { .x = x,
.y = y,
.z = z };
}
return point;
}
Преимущество этого в том, что он все равно будет работать, если члены Point
переставлены и расширены. Это также полезно для записи stati c отдельных назначений.
Я также предпочитаю calloc()
установить все неинициализированные биты структуры в ноль. Это, вероятно, не имеет значения, но если это произойдет, это действительно раздражает Гейзенбаг, чтобы выследить.