Hola Italico76. No es así exactamente, ya que cuando se pasa un array como parámetro, se pasa el puntero al primero elemento del mismo. Entonces, los cambios que se hagan al array dentro de la función, serán permanentes.
Veamos un ejemplo, y de paso le damos un tirón al ejercicio de jscmanuel. Es algo parecido al enunciado, pero un poco a la inversa:
Código C++:
Ver original#include <iostream>
using namespace std;
bool Incrementa (char letras[10]);
int main()
{
char cadena[]="ABCDEFGHIJ";
//char cadena[]="ABCD5FGHIJ"; //introducimos un caracter numerico en la cadena
if (Incrementa(cadena))
{
cout<<cadena;
}
else
{
cout<<"La cadena sólo ha de tener letras!";
}
return 0;
}
bool Incrementa (char letras[10])
{
for (int i=0;i<10;i++)
{
if (letras[i]>48 && letras[i]<57)
{
return false; //salgo de la función retornando false y sin tocar el array
}
}
//si llego hasta aqui realizo el incremento.....
for (int i=0;i<10;i++)
{
letras[i]=letras[i+1];
}
return true;
}
(si comentas la primera version de la cadena y descomentas la segunda, retornará false sin llegar a modificar la cadena usada como parámetro)
Bueno, seguramente te ha llamado la atención la forma de pasar el array, cuando normalmente se hace pasando el puntero de forma explícita.
Esta forma, la de pasar un "array[10]" tendrá problemas si consideramos que siempre vamos a pasar un array de 10 elementos, y luego pasamos uno menor. (El ejercicio contempla la posibilidad de pasar por ejemplo la cadena "12324"), pero eso era para mas adelante, cuando ya hubiera resuelto la cuestión fundamental.