Hola, gracias en primer lugar por responderme tan rapidamente
Hago lo que me indica pero sigue sin funcionar:
¿Lo estoy aplicando bien?
Saludos y gracias de nuevo.
Hago lo que me indica pero sigue sin funcionar:
Código [Seleccionar]
#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.
Cita de: Ferno en 17 Noviembre 2012, 22:00 PM
Veo algunas cosas que me hacen ruido.
Primero que nada, en la función "menu" vos declaras un:Código (c) [Seleccionar]int* A;
Y está perfecto, pero lo que vos estás pasando a las demás funciones es, por ejemplo:Código (c) [Seleccionar]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 (c) [Seleccionar]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!