elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Diferencia con puntero a vector en lenguaje C (dentro y fuera de main).
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Diferencia con puntero a vector en lenguaje C (dentro y fuera de main).  (Leído 855 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Diferencia con puntero a vector en lenguaje C (dentro y fuera de main).
« en: 29 Septiembre 2016, 19:00 pm »

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)

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define MAX 10
  6.  
  7. int main(void){
  8. int a[MAX];
  9. int (*ptrVector)[MAX] = &a;
  10. int i;
  11. srand (time(NULL));
  12.  
  13. printf( "\n" );
  14.  
  15. for(i=0; i<MAX; i++){
  16. (*ptrVector)[i] = rand() % 50;
  17. }
  18.  
  19. for(i=0; i<MAX; i++){
  20. printf(" %d ", (*ptrVector)[i]);
  21. }
  22.  
  23. printf( "\n\n" );
  24.  
  25. return 0;
  26. }

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

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define MAX 25
  6.  
  7. void llenar( int *ptrVector );
  8. void mostrar( int  const *ptrVector );
  9. void sumar( int const *ptrVector );
  10.  
  11. int main( void ){
  12. int vector[MAX], ( *ptrVector )[MAX] = &vector;
  13.  
  14. llenar( *ptrVector );
  15.  
  16. mostrar( *ptrVector );
  17.  
  18. //sumar( *ptrVector );
  19.  
  20. printf( "\n\n" );
  21.  
  22. return 0;
  23. }
  24.  
  25.  
  26. void llenar( int *ptrVector ){
  27. int i;
  28. srand( time(NULL) );
  29.  
  30. printf( "\n" );
  31.  
  32. for( i=0; i<MAX; i++){
  33. *(ptrVector+i) = rand() % 100;
  34. }
  35. }
  36.  
  37. void mostrar( int const *ptrVector ){
  38. int i;
  39.  
  40. printf( "\n" );
  41.  
  42. for( i=0; i<MAX; i++){
  43. if( i % 5 == 0 ){
  44. printf( "\n" );
  45. }
  46. printf( "   %2d", *(ptrVector+i) );
  47. }
  48.  
  49. printf( "\n   ----------------------" );
  50.  
  51. }
  52.  
  53. void sumar( int const *ptrVector ){
  54. int i; //resultado=0, indice;
  55. //indice = Fila*Numero de columnas + Columna
  56.  
  57. printf( "\n" );
  58.  
  59. for( i=0; i<MAX; i++){
  60. }
  61.  
  62. printf( "\n---------------" );
  63.  
  64. }

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

Saludos y como siempre muchas gracias. -










En línea

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


Desconectado Desconectado

Mensajes: 1.492



Ver Perfil
Re: Diferencia con puntero a vector en lenguaje C (dentro y fuera de main).
« Respuesta #1 en: 29 Septiembre 2016, 20:42 pm »

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

Código
  1. void llenar( int (*ptrVector)[MAX] );
  2. void mostrar( int  const (*ptrVector)[MAX] );
  3. 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.


En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Diferencia con puntero a vector en lenguaje C (dentro y fuera de main).
« Respuesta #2 en: 29 Septiembre 2016, 21:59 pm »

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é. -  

Código
  1. llenar( ptrVector );

Saludos.
En línea

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


Desconectado Desconectado

Mensajes: 1.492



Ver Perfil
Re: Diferencia con puntero a vector en lenguaje C (dentro y fuera de main).
« Respuesta #3 en: 29 Septiembre 2016, 22:04 pm »

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

Es lo mismo que a
Código:
void f(int a);
la llamas con
Código:
int a;
// ...
f(a);
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Acceso BBDD desde fuera del main
Java
Baal_30 1 1,192 Último mensaje 31 Mayo 2015, 17:00 pm
por Baal_30
No me imprime esta cadena fuera de main
Programación C/C++
SebaC 5 1,273 Último mensaje 6 Mayo 2016, 22:09 pm
por geeke
Pasar vector de puntero a char a las funciones[C] « 1 2 »
Programación C/C++
NOB2014 16 6,452 Último mensaje 22 Junio 2016, 14:56 pm
por NOB2014
Crear puntero a clase abstracta y problema usando vector
Programación C/C++
cNoob 6 1,262 Último mensaje 9 Enero 2018, 20:39 pm
por ThunderCls
problema para imprimir un vector en el main (java)
Dudas Generales
dam_daniel 0 456 Último mensaje 15 Marzo 2019, 17:31 pm
por dam_daniel
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines