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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con punteros  (Leído 2,919 veces)
Xenomorfo77

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Ayuda con punteros
« en: 1 Octubre 2013, 17:23 pm »

Buenas estoy practicando con punteros y he hecho este programa y funciona bien pero me da warnings y quisiera saber porque son.
El programa crea una baraja de cartas que van del 1 al 10 repetidas 4 veces simulando que hubiese 4 palos. Despues las imprime.

||In function 'main':|
|14|warning: passing argument 1 of 'CrearBaraja' from incompatible pointer type [enabled by default]|
|5|note: expected 'int **' but argument is of type 'int (*)[(sizetype)(ncartas)]'|
|15|warning: passing argument 1 of 'ImprimirBaraja' from incompatible pointer type [enabled by default]|
|6|note: expected 'int **' but argument is of type 'int (*)[(sizetype)(ncartas)]'|
||In function 'CrearBaraja':|
|26|warning: assignment makes pointer from integer without a cast [enabled by default]|
||=== Build finished: 0 errors, 3 warnings (0 minutes, 0 seconds) ===|

Aquí esta el code. ¿Como estaría bien?

Código
  1. #include <stdio.h>
  2. //#include <stdlib.h>
  3. //#include <time.h>
  4.  
  5. void CrearBaraja(int *matriz[],int numerocartas);
  6. void ImprimirBaraja(int *matriz[],int numerocartas);
  7.  
  8. int main()
  9. {
  10.    int j;
  11.    int ncartas=40;
  12.    int cartas[ncartas];
  13.  
  14.    CrearBaraja(&cartas,ncartas);
  15.    ImprimirBaraja(&cartas,ncartas);
  16.  
  17.  
  18.    return 0;
  19. }
  20.  
  21. void CrearBaraja(int *matriz[],int numerocartas)
  22. {
  23.    int j;
  24.    for(j=0;j<numerocartas;j++)
  25.    {
  26.        matriz[j]=(j%10)+1;
  27.  
  28.    }
  29. }
  30.  
  31. void ImprimirBaraja(int *matriz[],int numerocartas)
  32. {
  33.    int j;
  34.    for(j=0;j<numerocartas;j++)
  35.    {
  36.        printf("Carta %d = %d\n",j+1,matriz[j]);
  37.    }
  38. }
  39.  

Gracias por la ayuda!!


« Última modificación: 1 Octubre 2013, 18:11 pm por Xenomorfo77 » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con punteros
« Respuesta #1 en: 2 Octubre 2013, 02:30 am »

El programa tiene algunos errores.

* El primer argumento de las funciones es "int *matriz[]" cuando debería ser "int *matriz" (también es valido "int matriz[]").

* No es necesario el uso del operador "dirección de" (el '&') en las llamadas a función:
Código
  1. CrearBaraja(&cartas, ncartas);
  2. ImprimirBaraja(&cartas, ncartas);

* La declaración del array:
Código
  1. int ncartas=40;
  2. int cartas[ncartas];
En el mejor de los casos es problemático ya que depende del estándar indicado al compilar (en C90 no se permite, en C99 si y en C11 es opcional).

El programa con los cambios:
Código
  1. #include <stdio.h>
  2.  
  3. #define NCARTAS  40
  4.  
  5. void CrearBaraja(int *matriz, int numerocartas);
  6. void ImprimirBaraja(int *matriz,int numerocartas);
  7.  
  8. int main(void)
  9. {
  10.   int cartas[NCARTAS];
  11.  
  12.   CrearBaraja(cartas, NCARTAS);
  13.   ImprimirBaraja(cartas, NCARTAS);
  14.  
  15.   return 0;
  16. }
  17.  
  18. void CrearBaraja(int *matriz, int numerocartas)
  19. {
  20.   int j;
  21.   for(j=0;j<numerocartas;j++)
  22.   {
  23.       matriz[j]=(j%10)+1;
  24.  
  25.   }
  26. }
  27.  
  28. void ImprimirBaraja(int *matriz,int numerocartas)
  29. {
  30.   int j;
  31.   for(j=0;j<numerocartas;j++)
  32.   {
  33.       printf("Carta %d = %d\n",j+1,matriz[j]);
  34.   }
  35. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Xenomorfo77

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: Ayuda con punteros
« Respuesta #2 en: 2 Octubre 2013, 08:16 am »

Gracias Jefe!!! Muy claro.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[AYUDA] C# punteros
.NET (C#, VB.NET, ASP)
Miseryk 1 1,872 Último mensaje 28 Febrero 2014, 21:06 pm
por kub0x
Ayuda con Punteros en C.
Programación C/C++
camv123 3 1,748 Último mensaje 20 Abril 2014, 02:03 am
por camv123
Ayuda con Cstring y punteros
Programación C/C++
Zorzem 4 1,696 Último mensaje 25 Junio 2014, 11:39 am
por Eternal Idol
Ayuda con punteros en C « 1 2 »
Programación C/C++
snake_linux 12 4,590 Último mensaje 27 Agosto 2015, 15:50 pm
por kondrag_X1
[ayuda] punteros en linklist
Programación C/C++
bash 1 1,489 Último mensaje 15 Octubre 2016, 13:47 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines