Diferencia con puntero a vector en lenguaje C (dentro y fuera de main).

Iniciado por NOB2014, 29 Septiembre 2016, 19:00 PM

0 Miembros y 1 Visitante están viendo este tema.

NOB2014

Hola, gente, como están. -
La consulta es para que me digan que estoy haciendo mal, si está dentro de la función main tengo que utilizar esta sintaxis(línea 16/20)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 10

int main(void){
int a[MAX];
int (*ptrVector)[MAX] = &a;
int i;
srand (time(NULL));

printf( "\n" );

for(i=0; i<MAX; i++){
(*ptrVector)[i] = rand() % 50;
}

for(i=0; i<MAX; i++){
printf(" %d ", (*ptrVector)[i]);
}

printf( "\n\n" );

return 0;
}


Y si está en otra función esta otra(línea 33/46)

Yo quisiera utilizar siempre la primera pero no sé cómo pasar el puntero correctamente a las funciones. -

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 25

void llenar( int *ptrVector );
void mostrar( int  const *ptrVector );
void sumar( int const *ptrVector );

int main( void ){
int vector[MAX], ( *ptrVector )[MAX] = &vector;

llenar( *ptrVector );

mostrar( *ptrVector );

//sumar( *ptrVector );

printf( "\n\n" );

return 0;
}


void llenar( int *ptrVector ){
int i;
srand( time(NULL) );

printf( "\n" );

for( i=0; i<MAX; i++){
*(ptrVector+i) = rand() % 100;
}
}

void mostrar( int const *ptrVector ){
int i;

printf( "\n" );

for( i=0; i<MAX; i++){
if( i % 5 == 0 ){
printf( "\n" );
}
printf( "   %2d", *(ptrVector+i) );
}

printf( "\n   ----------------------" );

}

void sumar( int const *ptrVector ){
int i; //resultado=0, indice;
//indice = Fila*Numero de columnas + Columna

printf( "\n" );

for( i=0; i<MAX; i++){
}

printf( "\n---------------" );

}


En cuanto a la función sumar todavía no lo logro, pero ya va a salir, seguramente. -

Saludos y como siempre muchas gracias. -








abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

MAFUS

Si tu tipo de dato es int (*)[MAX] eso es lo que debes pasarle a las funciones.

void llenar( int (*ptrVector)[MAX] );
void mostrar( int  const (*ptrVector)[MAX] );
void sumar( int const (*ptrVector)[MAX] );

Entonces podrás usar el tipo de dato como lo hacías con el primer ejemplo.

Sobre la suma, adelante, suerte y al toro.

NOB2014

Hola.
Bien entendí y funciona a la perfección, por si alguien más tiene el mismo inconveniente se debe quitar el asterisco de la llamada a las distintas funciones, no sé explicar el porqué. -  

llenar( ptrVector );

Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

MAFUS

ptrVector es el nombre de la variable tipo int (*)[MAX].

Es lo mismo que a
void f(int a);
la llamas con
int a;
// ...
f(a);