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. -
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.
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.
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);