Почему p-> p1 выдает 1, ....?
Поскольку последний код присваивается p->p1
со значением 1 с ****
// v--- p1 member
struct S2 s2 = {1,2,3,0};
struct S2 *p;
p = (struct s2 *)malloc(sizeof(struct S2));
*p = s2; // **** This copies the contents of `s2` to `*p`.
Почему ... s2.p1 выдает 0?
Поскольку код позже присвоил 0 для s2.p1
с
// v--- p1 member
struct S2 s2 = {1,2,3,0};
...
s2.p1 = 0;
Они (p->p1
, s2.p1
) оба указывают на одно и то же
Нет, они этого не делают.p
- указатель, которому присвоено значение из выделенной памяти, а s2
- объект, определенный с struct S2 s2
.Выделенная память и объект s2
не совпадают.s2
как структура, никогда ни на что не указывающая. @ Мельпомена