C语言简单的动态内存分配

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:41:44
#include<stdio.h>
#include<malloc.h>
int main()
{int btc,*p1;
p1=(int *)malloc(10*sizeof(int));

for(btc=0;btc<10;++btc)
scanf("%d",&p1[btc]);
printf("\n");
for(btc=0;btc<10;++btc)
printf("%d",p1[btc]);
}我没定义数组为什么还可以像数组那样输出

*p1 分配单元后就可以当一维数组p1[i]使用。
因为 p1[i] 的地址 与 (p1+i) 指向的值所在地方一样。

例如,p1[4] 的地址 与 p1+4 指向的地址一样:
printf("%d %d\n", &p1[4], (p1+4) );
打印出来一看就知道了。