el problema esta en al retornar la variable i esta no existe porque la estas creando de manera local dentro del for, hazlo de esta manera
Código C++:
Ver originalint longitud(char cad_a[])
{
int i;
for(i=0;cad_a[i]!='\0';i++);
return i;
}
y tu funcion trabajara sin problemas