在不知道需要占用内存空间大小时,需要在堆栈上动态开辟内存空间,空间使用结束后需要程序员自己释放。
#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,*p,i,j,m,temp;
printf("本程序可对任意个整数排序;\n");
printf("请输入整数的总个数: ");
scanf("%d",&n);
p=(int *)calloc(n,sizeof(int)); //运行时决定内存分配大小
if(p==0)
{
printf("分配失败!\n");
exit(1);
}
else
{
for(i=0;i<n;i++)
{
scanf("%d",&p[i]);
}
for(j=0;j<n-1;j++)
for(m=j+1;m<n;m++)
{
if(p[j]>p[m])
{
temp=p[j];
p[j]=p[m];
p[m]=temp;
}
}
}
for(m=0;m<n;m++)
printf("%d ",p[m]);
int a=p[3];
printf("\n%x",p);
free(p);
printf("\n%x",p);
printf("\n%d",a);
p=NULL;
printf("\n%x\n",p);
return;
}