1.生成随机数
- 初始化随机发生器:
srand(NULL)
srand((unsigned)time(NULL))
- 调用函数:
rand()
问题:srand(NULL)
初始化发生器时每次随机数都是一样的。
解决:
初始化随机发生器时调用srand((unsigned)time(NULL))
,每次发生器都是当前时间,所以随机数不会再一样了。
1 | int main(){ |
2.重点,内存开辟
- c 有分区,四驱模型,栈,堆
- 栈(是一块连续的内存的区域):占用内存空间最大值 2M ,开辟内存的方式是静态内存开辟 int arr[1010241024],方法结束会自动回收
- 堆(是用链表来存储的空闲内存地址的,是不连续的):占用内存空间最大值 80% ,开辟内存的方式是动态内存开辟 ,不会自动回收必须手动回收(内存不再使用的时候一定要手动回收)
静态内存开辟
1 | void staticlloc(){ |
3.动态内存开辟
- 开辟内存:
malloc
int* arr = (int*)malloc(sizeof(int)*num);
- 释放内存:
free
free(arr)
不要反复去释放,那块地址一旦被释放,就有可能会被新的应用占用,不要去再次释放。
1 | void dynamiclloc(){ |
1 | int main(){ |
打印结果
1 | 请输入数的个数:3 |
4.改变内存空间大小
realloc
:int* new_arr = (int*)realloc(arr, sizeof(int)*(num+new_num));
1 | // 改变内存空间大小 |
打印结果:
1 | 请输入数的个数:2 |