struct first_struct
{
int a;
int b;
};
struct second_struct
{
char d;
int e;
};
struct second_struct second_ins = {'a',10};
struct first_struct first_ins = {20,12};
int main()
{
struct second_struct *pointer = &first_ins;
printf("%d\n",pointer->d);
return 0;
}
E ottengo un risultato di 20. In pratica, stavo cercando di vedere che se dichiaro un puntatore di struttura, e provo a puntarlo su un'istanza di un'altra struttura, quale risultato ottengo Oltre a un avvertimento del compilatore per un tipo di puntatore incompatibile, si costruisce e funziona bene. Stavo cercando di capire come questa operazione è stata interpretata dal compilatore. Non dovrebbe essere indefinito, o potrebbe esserlo e sto solo diventando fortunato con il risultato.Puntatore di struttura che punta a un'istanza di struttura diversa
'pointer-> d' è esattamente uguale a' * pointer' perché è il primo elemento nella struttura, quindi funziona correttamente. –
Il primo elemento nel secondo_struct è un carattere, ed è un numero intero in first_struct. Quindi, non dovrebbe lamentarsi quando sto provando a stampare% d. Immagino di non aver capito bene il tuo commento. –
Anche pointer-> e funzionerebbe correttamente. –