前言
通常情况下,定义数组一般都是直接初始化(eg:int arr1[]={1,2,3,4,5};),或者是限定数组元素个数(eg:int arr2[10]={0};)。但是这些定义数组的方式具有很大的局限性:①当实际不需要那么多数组元素的时候,就会造成空间的浪费;②当实际的需求的元素个数超出了数组的容量时,就容易造成栈溢出。针对这些问题,使用动态内存分配就能够很好地去应对,在堆上灵活开辟空间满足用户需求。
动态内存分配
malloc
函数原型:void *malloc( size_t size );
头文件:<stdlib.h>
malloc的参数是待开辟空间的总字节大小,在开辟成功之后会返回空间的起始地址,若空间不够开辟失败则会返回NULL。
注意事项:
1、将malloc后的值赋值给指针变量的时候,需进行强制类型转换,以便使得赋值符号两边类型一致,例如:
int* i = (int