//gcc --std=c11 -g -O0 -DDEBUG -Wall main.c //cat ./main.c #include #include typedef struct { size_t X; double Y; double Z; } Coordinate; typedef struct { Coordinate *coordinate; } Total; void count(Total *totalP) { totalP->coordinate[0].X = 1ULL; totalP->coordinate[1].Y = 2.0; totalP->coordinate[2].Z = 3.0; } int main(void) { // Инициализация структуры total Total total; // Заполнение нулями (во избежании); memset(&total,0x0,sizeof(Total)); // Инициализация структуры в стеке Coordinate coordinate[3]; // Заполнение нулями (во избежание); memset(&coordinate,0x0,sizeof(coordinate)); // Указатель на промежуточный указатель total.coordinate = coordinate; //Передать аргумент (указатель на структуру Total) в функцию count(&total); // Вывод результата printf("X=%zu,Y=%.6f,Z=%.6f\n", total.coordinate[0].X, total.coordinate[1].Y, total.coordinate[2].Z); }