• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

AYUDA Funciones en C

CGMReaper

Nuevo
Registrado
19 Ago 2014
Mensajes
11
Puntos
0
Hola a todos. No tengo muy claro el uso de punteros para pasar variables en memoria entre funciones, es decir, un ejemplo:
tres funciones opciones(swith), leer y escribir
int main
char c
opciones(c)
leer(a) //creo que aquí sería &a
escribir(a)

switch(c);
case 1: leer
break
case 2: escribir
break

void leer(int a) //aquí *a, pero no funciona
void escribir (int a)

Con lo que me lío es con & y *, lo he intentado de varias formas y me devuelve un 0 en la 2ª opción
El switch creo que funciona perfectamente, lo he probado
Obviad los errores de sintaxis, lo he simplificado todo
A ver si me podéis ayudar
Gracias
 
Creo que aqui esta bastante bien explicado el tema de punteros. Programacion en C/Punteros - Wikilibros
Más material:
- 76. Programacion en C - Punteros - Uso basico de punteros en C - YouTube
- Los punteros en C

Si despues de ver el video de youtube y leerte lo basico de punteros sigues sin entenderlo estaremos encantados de ayudarte, pero debes hacer un pequeño esfuerzo por entenderlo tu a tu manera.

Por cierto, puedes usar los flags de codigo [ CODE ] [ / CODE ] para que veamos el codigo que pongas estructurado.

Por ejemplo:
Código:
 bool loEntiendes=false
if (loEntiendes=false){ vuelve a leer y preguntar }
else {enhorabuena!}
 
Código:
/* Prototipos de funciones */
void leer_opcion_menu(char *c);
void ejecutar_opcion(char c);
void leer (int *n);
void print (int n);

int main(){
    char c;   //opciones
 int n;
    do{ system("cls");
        leer_opcion_menu(&c);
        ejecutar_opcion(c);
        leer (&n);
        print (n);
    }while (c!='3');
    return 0;
}
void leer_opcion_menu(char *c){
 printf("\n\n      MENU DE OPCIONES");
 printf("\n      ================");
 printf("\n1.Insertar nuevo punto");
 printf("\n2.Imprimir puntos");
 *c=getch();
}
void ejecutar_opcion(char c){
 int n; 
    switch(c){
        case '1': leer (*n);
            break;
        case '2': print (n);
            break;
void leer (int *n){ //mando el contenido de n
 printf("\nEscribe un numero\t");scanf("\t%d", &n); //creo la dirección n
}
void print (int n){ 
 printf("\nEl numero de la opcion anterior es %d", n);
}

Como yo lo he entendido no me sale, hasta me salió 138 xD
Y ese chico del vídeo me gusta, ya lo he visto
 
int a;

&a --> devuelve dirección de memoria donde esta guardado el valor de a;
a --> hace referencia al valor.

int *a; deberás reservar una posición de memoria con malloc o darle el valor de una dirección de memoria con un valor valido.

a--> devuelve dirección de memoria donde esta guardado el valor de a;
*a --> hace referencia al valor.
&a --> devuelve la dirección donde se guarda la dirección del valor a.
 
Entendido, gracias. Además era un error tonto. Es que el switch de ejecutar_opcion debe devolver un puntero a n, o sea en el main pongo ejecutar_opcion(char c, int &n) y en la función void(charc, int *n)
 
Arriba