C语言有关创建函数的问题

创建一个函数,返回元素个数为n的int型数组v中的最小值。
int min_of(const int v[],int n){}
我的代码如下:
int min_of(const int v[], int n)
{
int min = v[0];
for (int i = 1; i < n; i++)
{
if (v[i] < min)
min = v[i];
}
return min;
}
int main(void)
{
int n;
int x[] = {1};
printf("输入的元素个数:\n");
scanf("%d", &n);
printf("请输入元素:");
for (int i = 0; i < n; i++)
scanf("%d", &x);
printf("最小值是:%d",min_of(x,n));
}

运行结果:

img

不懂哪里错了

1.x的大小没有定义
2.输入的时候是x[i]不是x

#include<stdio.h>
int min_of(const int v[], int n)
{
    int min = v[0];
    for (int i = 1; i < n; i++)
    {
        if (v[i] < min)
            min = v[i];
    }
    return min;
}
int main(void)
{
    int n;
    int x[100] = {1};
    printf("输入的元素个数:\n");
    scanf("%d", &n);
    printf("请输入元素:");
    for (int i = 0; i < n; i++)
        scanf("%d", &x[i]);
    printf("最小值是:%d",min_of(x,n));
}

x是个数组,它同时也是个指针,&x与&x[0]的地址相同,所以你将输入的所有值都赋值给了x[0]
同时,x初始化时里面只有一个值,它的长度是1,其实后面的用法已经造成了越界,只不过c语言是基于指针的,偶尔越界也不报错
毕竟你只从内存里读数据不往里面写
那么你只有0的位置有数据,后面全是内存里的随机值,当然是什么都有可能了