/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

sugerencia en capitulo 10

 
      Índice del Foro elrincondelc.com -> Errores/Sugerencias del curso
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
juanel



Registrado: 24 Ene 2005
Mensajes: 236

MensajePublicado: 31/01/2005 6:51 pm
Título: sugerencia en capitulo 10

hola soy principiante y estoy estudiando el curso
me cuesta mucho entender lo de pasar arrays a las funciones usando punteros. Puede que sea yo pero nose quiza sirva de algo esta sugerencia.
Yo todavia no lo eh entendido.
Hay alguna otra explicacion extra en este foro??
Saludos Confused
Volver arriba
soloc



Registrado: 25 Ene 2005
Mensajes: 212
Ubicación: Bolivia

MensajePublicado: 01/02/2005 12:17 pm
Título:

Hola...
Mira aprovecho que ya envié esta respuesta a otro usuario del rincón del C y te explico a fondo.

Existen muchas formas de pasar un arreglo a una funcion.

Código:
// Version 1...

#define MAX 10

int Sumar( int Numeros[MAX] )
{
   int Pos, Suma=0;

   for ( Pos = 0 ; Pos < MAX ; Pos++ )
      Suma += Numeros[ Pos ] ;

   return Suma;
}


// Version 2...

#define MAX 10

int Sumar( int Numeros[ ] )
{
   int Pos, Suma=0;

   for ( Pos = 0 ; Pos < MAX ; Pos++ )
      Suma += Numeros[ Pos ] ;

   return Suma;
}


// Version 3...

#define MAX 10

int Sumar( int *Numeros )
{
   int Pos, Suma=0;

   for ( Pos = 0 ; Pos < MAX ; Pos++ )
      Suma += Numeros[ Pos ] ;

   return Suma;
}


// Para llamar a cualquiera de las implementaciones debes usar:

void main( void )
{
   int Nums[ MAX ] = { 2, 4, 6, 8 ,0, 1, 2, 3, 4, 5 };
   int Resultado;

   Resultado = Sumar( Nums );
   printf("La sumatoria es: %i", Resultado);
}



Cuando se envia un arreglo a una función, en realidad se envia la direccíon de inicio del arreglo (puntero al inicio del arreglo). Luego se puede acceder a los elementos por medio de NombreArreglo[ Posicion ], pero esto en realidad significa que NombreArreglo es el puntero, y Posicion es el desplazamiento que debe aplicarse en el arreglo. Sin embargo un puntero desplazado sigue siendo un puntero... entonces para acceder al elemento contenido en esa dirección se utilizar el operador *.

NombreArreglo[ Posicion ] es equivalente a *( NombreArreglo + Posicion )

OK?

Esta explicación es válida para arreglos de una sola dimensión. Para multiples dimensiones es necesario hacer unos pequenos ajustes en la versión 2 y 3.


Espero que te haya ayudado...
Saludos Very Happy
Volver arriba
      Índice del Foro elrincondelc.com -> Errores/Sugerencias del curso
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com