This:
node1->left=*(struct node2*)node2);
Содержит синтаксическую ошибку и ненужное приведение. Он также разыменовывает значение node2
, что делает его неправильным.
Это:
node1=node1->left;
Также неправильно . Вы не можете назначить другой тип указателя на node1
. Конечно, node1->left
- это void*
, так что на самом деле это допустимое присвоение само по себе, но это приведет к интерпретации node2
как типа struct node1*
, что неверно.
Правильный код , если я правильно понял, что вы хотите сделать, было бы:
int main(void) {
struct node1* node1 = malloc(sizeof(struct node1));
struct node2* node2 = malloc(sizeof(struct node2));
node2->data = 5;
node1->left= node2;
// Access node2->data from node1:
((struct node2*)node1->left)->data;
return 0;
}