I have two types of structural equivalence ideas I am struggling to understand.
VAR_1 = int
VAR_2 = pointer to VAR_1
So here, I feel like they
Late to the party, but I just want to state that I disagree with the other answer.
While language implementation detail is important, ultimately structural equivalence is NOT just about the word length assigned to the type. If that was the case, you could even argue that float and int can be structurally equivalent in C since maybe some C compiler implements them using words with the same length.
If you are not still convinced, think about what happens when you increment a pointer-to-int versus an int.
int p=100;
int *q=100;
p++; //p = 101
*q++; // Pointer moves to the next int in memory adding int word length to the underlying stored value
I would in fact argue that a type system has much more to do with language semantics. Pointer-to-int semantics is different than int semantics in C. Therefore these two types are not structurally equivalent.
To answer your question, VAR_1 and VAR_2 are not structurally equivalent (one is int, the other is pointer to int). But VAR_2 and VAR_3 are structurally equivalent. Since they point to the same basic type in C.