sugerencia en capitulo 10

Si detectas algún error en El Curso de C de Gorka Urrutia o tienes alguna sugerencia escribe en este foro.
Responder
Mensaje
Autor
Avatar de Usuario
juanel
Mensajes: 236
Registrado: 24/01/2005 12:00 am

sugerencia en capitulo 10

#1 Mensaje por juanel » 31/01/2005 6:51 pm

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 :?

Avatar de Usuario
soloc
Mensajes: 212
Registrado: 25/01/2005 12:00 am
Ubicación: Bolivia

#2 Mensaje por soloc » 01/02/2005 12:17 pm

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: Seleccionar todo

// 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 :D

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados