Why is my code crashing? : <p>I've got a pretty basic question, why is my code crashing? I'm learning to use pointers and I really don't know why the code crashes after I enter the values of x1,x2,y1 and y2 (this happens in case 3 of the second switch). I've looked everywhere and I can't find a reason. I need to send the values entered in function menuLR, case 3 to the function DistDosPuntos, an then return the values to menuLR,case 3.  </p>

<p>Here's my code.</p>

<p>Some of the code is in spanish, however it's not relevant to know how the code is working. In advance thanks for your help and patience, I know this is quite dumb, but I've tried several methods and haven't been able to either solve or understand the problem</p>

<pre><code>#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;

void menu1();
void menuLR();
void DistDosPuntos();

void menu1()
{
int a;
float m,x1,x2,y1,y2,k,v,d;  
printf("MENU PRINCIPAL\n");
printf("1.- La línea Recta \n");
printf("2.- La circunferencia \n");
printf("3.- Coordenaas Polares \n");
printf("4.- Salir\n");
scanf("%d",&amp;a); 

switch(a)
{
    case 1: 
        menuLR(&amp;m,&amp;x1,&amp;x2,&amp;y1,&amp;y2,&amp;k,&amp;v,&amp;d);
    break;

    case 2 :
    // ; 
    break;

    case 3 :
    //; 
    break;

    case 4 :
    break ;
}

}

void menuLR (float *m,float*x1,float *x2,float *y1,float*y2,float*k,float         *v,float *d)
{   
int b;


printf("LA LINEA RECTA\n");
printf("1.- Ecuación de la recta dada su puendiente y un punto de la misma \n");
printf("2.- Ecuación de la recta que pasa por dos puntos\n");
printf("3.- Distancia entre dos puntos del plano \n");
printf("4.- Punto medio entre dos puntos del plano\n");
printf("5.- Perímetro y área de un triángulo en un plano\n");
printf("6.- Regresar al menú principal\n");
scanf("%d",&amp;b); 

switch (b)
{
    case 1 : 
    printf("Introduzca la pendiente de la recta m y el punto P1(x1,y1)\n");
    printf("Introduzca m\n");
    scanf("%f",m);
    printf("Introduzca x1\n");
    scanf("%f",x1);
    printf("Introduzca y1\n");
    scanf("%f",y1);

    printf("La ecuación de la recta es:\n");
    printf("y-y1 = m(x-x1)\n");
    printf("Sustituyendo valores:\n");
    printf("y-%f = %f (x-%f) \n" ,*y1,*m,*x1);
    printf("Desarrollando y despejando:\n");
    *k = ((*m)*(*x1));
    printf("y-%f = %fx-%f)\n",*y1,*m,*k);
    *v= -*k+*y1;
    printf("y=%fx+(%f)\n",*m,*v);

    printf("La ecuación de la recta en la forma general 'y=mx+b' es:\n");
    printf("y=%fx+(%f)\n",*m,*v);
    break;

    case 2 :



    break;

    case 3 :
    printf("Introduzca el punto en el plano P1(X1,Y1)\n"); 
    printf("x1:");
    scanf("%f",x1);
    printf("y1:");
    scanf("%f",y1);
    printf("Introduzca el punto en el plano P2(X2,Y2)\n");
    printf("X2:\n");
    scanf("%f",x2);
    printf("Y2:\n");
    scanf("%f",y2);

    DistDosPuntos(&amp;x1,&amp;x2,&amp;y1,&amp;y2,&amp;d);

    printf("La distancia entre los puntos P1 y P2 es:\n %f",*d);
    break;

    case 4 :
    // exit ; 
    break ;
    }
   }

void DistDosPuntos(float *x1,float *x2, float *y1, float *y2,float *d)
{
    *d = sqrt(pow((*x2-*x1),2) + pow((*y2-*y1),2));
}


int main()
{
int a,b;
float m,x1,y1,k,v,d,y2,x2;
menu1(&amp;b,&amp;x1,&amp;y1,&amp;x2,&amp;y2,&amp;m,&amp;k,&amp;v,&amp;d);
DistDosPuntos(&amp;x1,&amp;x2,&amp;y1,&amp;y2,&amp;d);


return 0;
}
</code></pre>
