欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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(了解)