Мелкая копия со структурами в C - PullRequest
0 голосов
/ 20 февраля 2020

Допустим, у вас есть следующая структура:

typedef struct {
    int age;
} Child;

typedef struct {
    int age;
    Child firstChild;
} Parent;

int main() {
    Parent p1 = {5, {3}};
    Parent p2 = p1;
}

Когда вы копируете p1 в p2, вы выполняете поверхностную копию для обоих полей или только для поля Child? Я предполагаю, что age копируется по значению, но firstChild копируется мелко.

1 Ответ

2 голосов
/ 20 февраля 2020

Все будет скопировано, кроме (возможно) битов выравнивания.

Если у вас есть указатели, то будет скопировано значение указателя (адрес), а не то, на что они указывают , Это то, что вы могли бы назвать «мелким».

...