在不知道需要占用内存空间大小时,需要在堆栈上动态开辟内存空间,空间使用结束后需要程序员自己释放。
#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; }
时间: 2024-10-30 10:16:48