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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Duda sobre punteros en: 17 Noviembre 2012, 22:42 pm
Hola, gracias en primer lugar por responderme tan rapidamente :D

Hago lo que me indica pero sigue sin funcionar:

Código:
#include <stdio.h>
/**#include"Punter.h"**/

void Mvelocitats(int *A){
int tecla;

printf("1. Avanzado\n");

printf("2. Intermedio \n");

printf("3. Principiante \n");

printf("4. Salir\n");

printf("opcion: ");
        scanf("%d", &tecla);
        switch(tecla)
{
                    case 1: *A=1000;
       menu();
break;

   case 2: *A=2000;
menu();
break;
                    case 3: *A=3000;
menu();
break;
                    case 4:
menu();
break;

}
}
int main(){
int *A;
menu(A);

}


int menu(int *A){

int tecla;

printf("1. Velocidad \n");

printf("2. Imprimir \n");

printf("opcion: ");
        scanf("%d", &tecla);
         switch(tecla)
{
                    case 1: Mvelocitats(A);
break;


   case 2: Jugar(A);
break;

}
}

int Jugar(int *A)
{
infolevel(A);
}

int infolevel(int *A){
printf("%d",*A);
getchar();
}

¿Lo estoy aplicando bien?

Saludos y gracias de nuevo.

Veo algunas cosas que me hacen ruido.

Primero que nada, en la función "menu" vos declaras un:

Código
  1. int* A;

Y está perfecto, pero lo que vos estás pasando a las demás funciones es, por ejemplo:

Código
  1. Mvelocitats(&A);

Por ende, estás pasando en realidad un int** (ya que le estás pasando la dirección de memoria donde se aloja el puntero, y NO la dirección de memoria donde se aloja el "int" al que hace referencia ese puntero. Es decir, estarías usando un puntero doble, y lo que en realidad cambias en esas funciones es la dirección de memoria donde apunta A).
Espero que eso se haya entendido, lo que debes hacer es pasar simplemente:

Código
  1. Mvelocitats(A);

Debido a que A ya es un PUNTERO (es decir, guarda una dirección de memoria) funcionarán las funciones anteriores.

Sin embargo, hay algo que no me cierra, y es que al llamar a Mvelocitats, en cada case lo que haces es llamar a la funcion menu() nuevamente. Y lo que haces con esto es que se te declare una variable "A" diferente cada vez, por ende, nunca podrás utilizar los valores que le asignaste a *A en, por ejemplo, la función Mvelocitats().
Una solución a esto sería declarar ese puntero a int en el main y pasarselo como parámetro a menu(), luego, utiliza la forma de llamar que te indiqué al principio.

Espero que haya quedado claro y se solucione!
Salúd!
2  Programación / Programación C/C++ / Duda sobre punteros en: 17 Noviembre 2012, 21:48 pm
Hola muy buenas,

Estoy trabajando en desarrollo de un juego y me encuentro con un problema de punteros el cual he simplificado en el siguiente ejemplo:

Código:
#include <stdio.h>
/**#include"Punter.h"**/

void Mvelocitats(int *A){
int tecla;

printf("1. Avanzado\n");

printf("2. Intermedio \n");

printf("3. Principiante \n");

printf("4. Salir\n");

printf("opcion: ");
        scanf("%d", &tecla);
        switch(tecla)
{
                    case 1: *A=1000;
       menu();
break;

   case 2: *A=2000;
menu();
break;
                    case 3: *A=3000;
menu();
break;
                    case 4:
menu();
break;

}
}
int main(){

menu();

}


int menu(){
int *A;
int tecla;

printf("1. Velocidad \n");

printf("2. Imprimir \n");

printf("opcion: ");
        scanf("%d", &tecla);
         switch(tecla)
{
                    case 1: Mvelocitats(&A);
break;


   case 2: Jugar(&A);
break;

}
}

int Jugar(int *A)
{
infolevel(A);
}

int infolevel(int *A){
printf("%d",*A);
getchar();
}

He pues el mismo numero de funciones y una estructura muy similar... y mi pregunta es: porque en la función INFOLEVEL no recibo el valor de A que nos establece MVELOCITATS, evidentemente no estoy aplicando bien las propiedades de los punteros, agradecería muchísimo si alguien pudiese echarme una mano.


Saludos compañeros!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines