Consideremos el siguiente código:validez del código
void populate(int *arr)
{
for(int j=0;j<4;++j)
arr[j]=0;
}
int main()
{
int array[2][2];
populate(&array[0][0]);
}
Hubo una discusión con respecto a esto en una comunidad local si el código es válido o no (¿Se supone que mencionar su nombre?). Un tipo estaba diciendo que invoca UB porque viola
C++ estándar ($ 5.7/5 [expr.add])
"Si tanto el operando puntero y el punto resultado a los elementos de la misma array, o uno pasado el último elemento del objeto de matriz, la evaluación no producirá un desbordamiento; ; de lo contrario, el comportamiento no está definido. "
Pero no veo nada de malo en el código, el código está perfectamente bien para mí.
Entonces, solo quiero saber si este código es válido o no? ¿Me estoy perdiendo de algo?
+1 buena pregunta –