C语言第52课:内置函数补充(了解)

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

猜你喜欢

转载自blog.csdn.net/cxd15194119481/article/details/85028761
今日推荐