-
- //gcc --std=c11 -g -O0 -DDEBUG -Wall main.c
- //cat ./main.c
- #include <stdio.h>
- #include <string.h>
-
- 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);
- }
-