#include <stdio.h>
#include <malloc.h>
void main(){
int a[5]={4,5,2,8,6};
int len;
printf("请输入你需要分配的数组的长度,len=");
scanf("%d",&len);
int* pArr=(int*)malloc(sizeof(int)*len);
*pArr=4;//类似于a[0]=4
pArr[1]=9;//类似于a[1]=9
printf("%d %d\n",*pArr,*(pArr+1));
//或者自动赋值
int i;
for(i=0;i<len;i++){
scanf("%d",&pArr[i]);
}
for(i=0;i<len;i++){
printf("%d ",*(pArr+i));
}
free(pArr);//把pArr所代表的动态分配的20个字节的内存释放
}
#include <stdio.h>
#include <malloc.h>
void f(int * q){
*q=5;
//free(q); 如果这里加上free的话,那么会使main方法中的p变量所指向的空间不存在,
//那么所获得结果会是错误的,在c-free运行的结果是0
//因为变量p所指向的空间是动态的,那么也就可以进行动态的释放
}
void main(){
int* p=(int *)malloc(sizeof(int));
*p=10;
printf("%d\n",*p);//10
f(p);
printf("%d\n",*p); //如果f()中的free注释掉 结果为:5 否则结果为0
}