C语言第52课:内置函数补充(了解)
程序员文章站
2022-07-15 09:15:58
...
第52课:内置函数补充
·stdlib.h
·malloc()
·malloc的全称是memory allocation 动态内存分配
何谓动态?
编译的时候,没有内存
程序运行后,再分配内存
·当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到 动态的分配内存
·定义
(int*)malloc(sizeof(int)*5)
(double*)malloc(sizeof(double)*6)
·分配长度为num_bytes字节的内存块
//程序********************************************
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
//演示动态分配内存:
int* nums;
int i;
nums = (int*)malloc(20);//为前面的指针动态分配了20个字节的空间 20 == (sizeof(int)*5)
//double* dNums = (double*)malloc(sizeof(double)*5)
//等价于:int nums[5]
//数组与指针有什么关系? 数组名就是数组的首地址
//为指针动态分配空间后,指针就变成了数组
for(i = 0; i < 5; i++)
{
printf("请输入第%d个元素:", i + 1);
scanf("%d",nums + i);
}
printf("数组元素为:\n");
for(i = 0; i < 5; i++)
{
printf("%d\t",*(nums + i));
}
free(nums);//释放动态分配的内存,int nums[999999]数组很占用内存空间,用指针的话可以将内存空间用完后释放掉
nums = NULL;//不要变成野指针!
return 0;
}
//程序********************************************
//运行结果**********************************************
请输入第1个元素:1
请输入第2个元素:2
请输入第3个元素:3
请输入第4个元素:4
请输入第5个元素:5
数组元素为:
1 2 3 4 5
Process returned 0 (0x0) execution time : 10.035 s
Press any key to continue.
//运行结果**********************************************
·calloc
num = calloc(5,sizeof(int));
//num = (int*)malloc(sizeof(int)*5);
区别就是
·malloc有强制类型转换
·calloc会有初始化(0)
·realloc(了解)
上一篇: mysql 线程等待时间,解决sleep进程过多的办法
下一篇: Go语言-----内置函数
推荐阅读