Me parece que malinterpretaste lo que significa un arreglo, un arreglo NO es un tipo de variable, yo diria que un arreglo es un conjunto de variables del mismo tipo, agrupadas bajo el mismo nombre para facilitar su manejo.
O sea en lugar de tener 3 variables de tipo complex:
complex c1, complex c2, complex c3;
ponemos:
de esa forma cuando queremos referirnos a cada complex podemos usar c[0], c[1], c[2], (recuerda que los arreglos comienzan en cero) en lugar de c1, c2, c3, es mas, incluso podemos utilizar una variable indice (c[ i ]) para referirnos a la variable, con lo que podriamos poner un ciclo para imprimir los tres valores:
for (i=0; i<3; i++)
printf("%f %f\n", c[i].re, c[i].im]);
en lugar de:
printf("%f %f\n", c1.re, c1.im);
printf("%f %f\n", c2.re, c2.im);
printf("%f %f\n", c3.re, c3.im);
ahora imaginate que quisieras utilizar, como en tu ejemplo, 100 variables de tipo complex, seria demasiado laborioso hacer:
complex c1, c2, c3, c3, c5, c6, c7, c8 asi hasta llegar a c100
Asi que tu respuesta a:
se puede hacer eso??
es SI, y de hecho es la manera mas eficiente para manejar 100 valores de tipo complex
Saludos