Avatar ·

¿Cuántos niveles de anidamiento de pointers puede haber en C++?

Hola a todos. Llevo aproximadamente un año programando en C++ y me atormenta una pregunta teórica. Sé que se pueden crear pointers a pointers, por ejemplo `int** ptr`, e incluso triple pointers `int*** ptr`. Pero, ¿hasta dónde se puede llegar? ¿Existe alguna limitación en el estándar del lenguaje o depende del compilador/plataforma? Por ejemplo, puedo escribir: ```cpp int a = 5; int* p1 = &a; int** p2 = &p1; int*** p3 = &p2; int**** p4 = &p3; // y así sucesivamente... ``` Pero, ¿qué pasa si intento crear un pointer con 100 niveles de anidamiento? ¿Se compilará? Y si es así, ¿cómo funcionará en runtime? Me parece que en la práctica nadie usa más de 2-3 niveles, pero me gustaría entender los límites formales. También me interesa saber si hay diferencia entre C y C++ en este aspecto. He oído que en C la limitación puede ser más estricta. Y además: ¿afecta esto al rendimiento? Agradecería una respuesta detallada con ejemplos y referencias al estándar, si es posible.