POR QUÉ OBTENGO ERROR DE FALLA DE SEGMENTO EN LENGUAJE C CUANDO UTILIZO 1-D ARRAY

#include <stdio.h>

int main()
{
    //Initialize array

    int n; // n is use to decide the size of array 
    int x[n];
    int y[n];
    printf("enter the size of array:");
    scanf("%d", &n);

    if (n > 0)
    {
        for (int i = 0; i < n; i++)
        {
            printf("enter elements : \n");
            scanf("%d", &x[i]);
        }
    }

    printf("Array in reverse order: \n");
    //Loop through the array in reverse order
    for (int i = n - 1, j = 0; i >= 0; i--, j++)
    {
        y[j] = x[i];
        printf("%d ", y[j]);
    }

    return 0;
}

El programa anterior, he creado una matriz cuyo tamaño puede ser decidido por el usuario y también el usuario puede poner elementos en ella. Entonces, después de eso, quiero invertir esta matriz y quiero almacenarla en otra matriz. Pero recibí este error una y otra vez. Probé codeblock con el compilador gcc Pero aquí tengo un problema diferente, mi programa se conecta Así que cualquiera puede ayudarme a entender este problema. Soy un principiante en la codificación.

Answer

Cuando se crean las matrices xy , no se inicializa. No se sabe cuán grandes serán estas matrices. Es casi seguro que sus bucles estén accediendo a la matriz fuera de los límites.yn

Desea leer n, luego cree las matrices. Por supuesto, también desea verificar el error del resultado de scanf.

    int n; // n is use to decide the size of array 

    printf("enter the size of array:");
    scanf("%d", &n);

    int x[n];
    int y[n];