42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
|
#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;
|
||
|
}
|