У меня есть шар, у которого есть 1 смежный шар, как показано в коде ниже. Проблема, с которой я сталкиваюсь, заключается в обновлении значения шара 2, которое хранится в смежном шаре ball1, не обновляет фактический шар 2.
struct ball {
struct ball * adjacent;
size_t n_adjacent;
};
// Setting ball 2
struct ball ball2 = { .n_adjacent= 0, .adjacent = NULL } ;
// setting ball 1
struct ball ball1 = { .n_adjacent= 1, .adjacent = NULL } ;
// setting ball 1's adjacent
struct ball * ball1_adj = (struct ball*) calloc(1, sizeof(struct ball));
ball1_adj[0] = ball2;
ball1.adjacent = ball1_adj;
printf("Address of original ball 2 is: %p\n", &ball2);
printf("Address of ball 2 in the array is: %p\n", &(ball1.adjacent[0]));
// different but Ok as malloc has returned a pointer
ball1.adjacent[0].n_adjacent = 10; // Updating ball 2 's adjacents
printf("Adjacent of original ball 2 is: %d\n", ball2.n_adjacent); // prints 0
printf("Adjacent of ball 2 in the array is: %d\n", (ball1.adjacent[0]).n_adjacent); // prints 10
- Arent ball2 и ball1.adjacent [0] тот же шар (ball2)?
- Почему значение ball2 не обновлялось?
Спасибо