1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include <stdio.h>
struct Engine {
int displacement;
};
struct Car {
int mass;
struct Engine * p_engine;
};
void copy_engine(struct Engine * p_engine_src, struct Engine * p_engine_dest) {
p_engine_dest->displacement = p_engine_src->displacement;
return;
}
void copy_car(struct Car * p_car_src, struct Car * p_car_dest) {
p_car_dest->mass = p_car_src->mass;
copy_engine(p_car_src->p_engine, p_car_dest->p_engine);
return;
}
void build_engine(struct Engine * p_engine) {
p_engine->displacement = 1400;
return;
}
void build_car(struct Car * p_car, struct Engine * p_engine) {
build_engine(p_engine);
p_car->p_engine = p_engine;
p_car->mass = 1200;
return;
}
void print_car(struct Car * p_car) {
printf("car:%p\n", (void *) p_car);
printf(" car.mass:%d\n", p_car->mass);
printf(" car.p_engine:%p\n", (void *) p_car->p_engine);
printf(" car.p_engine.displacement:%d\n", p_car->p_engine->displacement);
return;
}
int main (int argc, char *argv[]) {
struct Car car1;
struct Car car2;
struct Engine engine1;
build_car(&car1, &engine1);
copy_car(&car1, &car2);
car2.p_engine->displacement = 1600;
print_car(&car1);
print_car(&car2);
return 0;
} |
Partager