#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// int rands[10]; // 全局变量处理方式

void *rand_arr(int size, int min, int max)
{
    srand(time(NULL));
    // 使用 malloc 分配内存，因为函数返回的指针是局部变量，会被释放
    // 而当使用 malloc 分配内存时，内存会一直存在，直到程序结束
    // malloc 存放在内存的堆区，而局部变量存放在内存的栈区
    // 堆区的内存需要手动释放，栈区的内存会自动释放
    int *rands = (int *)malloc(sizeof(int) * size);
    // int rands[size]; // 对照上面的处理方式
    // static int rands[size]; // 静态变量处理方式,但是变长数组不能使用静态变量
    for (int i = 0; i < size; i++)
    {
        rands[i] = (rand() % (max - min + 1)) + min;
    }
    return rands;
}

int main()
{
    int *nums = (int *)rand_arr(10, 3, 12);
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", *(nums + i));
    }
    printf("\n");

    printf("free nums\n");
    free(nums);

    for (int i = 0; i < 10; i++)
    {
        printf("%d ", *(nums + i));
    }
    printf("\n");
    return 0;
}