Qué significa realmente la imposibilidad de devolver matrices en C?
No estoy tratando de replicar la pregunta habitual acerca de que C no puede devolver matrices, sino profundizar un poco más en ella.
No podemos hacer esto:
char f(void)[8] {
char ret;
// ...fill...
return ret;
}
int main(int argc, char ** argv) {
char obj_a[10];
obj_a = f();
}
Pero podemos hacer:
struct s { char arr[10]; };
struct s f(void) {
struct s ret;
// ...fill...
return ret;
}
int main(int argc, char ** argv) {
struct s obj_a;
obj_a = f();
}
Entonces, estaba rozando el código ASM generado por gcc -S y parece estar trabajando con la pila, dirigiéndome a-x(%rbp)
como con cualquier otra función de retorno
¿Qué pasa con la devolución de matrices directamente? Quiero decir, no en términos de optimización o complejidad computacional, sino en términos de la capacidad real de hacerlo sin la capa de estructura.
Datos adicionales: estoy usando Linux y gcc en un Intel x64.