The complex data types (float complex, double complex, long double complex) have a memory layout where the imaginary part immediately follows the real part, which (IIRC) is a requirement. It may look like a structure, but I don't consider it as such. It would perhaps be convenient, for cross-language development, if float complex were passed like a struct, but this would cause me an endless stream of problems (much more than struct's).
I started in the computer business 1981, and have managed to stay away from complex numbers so far. I suspect I'm not the only one. In other words: I personally think the addition of complex numbers in C99 was a mistake, but since it's part of the current standard I have (finally) added it. I will not, however, do more than absolutely necessary to make it work.