#include #include #include // 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; }