Thats kinda of true but what you are really doing is this
**(avar + sizeof(bbb));
void aaa(bbb* aVar)
{
bbb myVar;
myVar = aVar[1]; //compiles
//myVar = *aVar[1]; //does not compile
}
The first works because myVar is taking a copy of the data in aVar[1] from the array slot 1.
So its the same as memcpy(&myVar, &aVar[1], sizeof(myVar));
My C-Fu is not that strong, but IIRC, unless aVar is a pointer to an array of pointers, array of arrays, or a pointer to a pointer, you will get an error.
aVar is a pointer to the location of an object of type bbb. The indexing operation ( [n] ) is equivalent to saying
*(somePtr + n)
What you are trying to do with this line:
myVar = *aVar[1];
is dereference whatever is found in the first slot of the array aVar.