【题引子】
C99可以用变量定义数组的大小,其他不可以。
int number;
scanf("%d",&number)
//C99中可以这么干
int a[number];
所以如果我们在定义之前不知道需要多少空间,应该怎样申请空间呢?
【动态内存分配】
动态内存分配:int* a=(int*)malloc(n*sizeof(int))
malloc函数原型:
#include <stdlib.h>
void* malloc(size_t size)
表示程序向系统申请一块大小为size的内存空间,函数返回一个void*,指向系统给其分配内存的首地址。如果返回为NULL,表示没有这么多空间可以分配了,即分配失败。
系统分配的只是连续的size大小的内存 (以字节为单位),并不管你向这个内存里存什么类型数据,所以malloc函数返回void指针。
如果需要在该内存区间存放int类型数据,强制转换为int*即可。
例程:
int main()
{
int n=0;
int i=0;
scanf("%d",&n);
int* a=(int*)malloc(n*sizeof(int));
for(;i<n;i++)
*(a+