[C con Clase] Prototipos!!

Programante programante en gmail.com
Mie Jun 11 22:40:40 CEST 2008


Zaka Elab escribió:
> Si te fijas he enviado dos correos de respuesta a tu respuesta, en el
> segundo está claro todo, pero en el primero, si te fijas, la salida
> no es la esperada, ya que como bien has dicho lo que se modifica es
> lo mismo ya que se pasan referencias.
>
> Es este código el que me produce problemas:
>
> #include <iostream>
>
> using namespace std;
>
> void foo(char a[10]){
>      a="aaaa";
> }
>
> int main(){
>
>      char a[10]= "bbbb";
>
>      cout << "La cadena vale: " << a << endl;
>
>      foo(a);
>
>      cout << "Ahora vale: " << a << endl;
>
>      return 0;
> }
>
> Según lo que dices, y con lo que yo estoy de acuerdo, la salida debería
> ser:
>
> La cadena vale: bbbb
> Ahora vale: aaaa
>
> Sin embargo la salida que obtengo es la siguiente:
>
> La cadena vale: bbbb
> Ahora vale: bbbb
>
> Gracias por tu tiempo.
>
> Zaka.

Como estás diciéndole al compilador que pasas de parámetro un char 
a[10], está siendo lo suficientemente astuto como para asignárselo a 
cada elemento, convirtiendo el "aaaa" en un array y copiándolo. No 
obstante, no siempre lo hará.




Más información sobre la lista de distribución Cconclase