malloc函数的问题
malloc函数在代码红色区域。假如5个数插入一个数,应该分配6个内存空间才对,但是我用malloc函数分配5个空间插入一个数,结果也正确。蒙蔽了!!!#include<stdio.h>
#include<stdlib.h>
int main()
{
int n, *p, i, j, temp, temp1;
while(1)
{
printf("请输入N,进行N个数的排序插入\n");
scanf("%d",&n);
p=(int *)malloc(sizeof(int) *n); 这里我昨天是用的*(n+1),今天改成*n试了下结果也是正确的。是我没明白malloc函数吗?
for(i=0i<n;i++)
scanf("%d",p+i);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(p[i]>p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
printf("请输入你要插入的数\n");
int a;
scanf("%d",&a);
if(a>p[n-1])
p[n]=a;
else{
for(i=0;i<n;i++)
if(p[i]>a)
{
temp=p[i];
p[i]=a;
for(j=i+1;j<=n;j++)
{
temp1=temp;
temp=p[j];
p[j]=temp1;
}
break;
}
}
for(i=0;i<=n;i++)
printf("%d ",p[i]);
printf("\n");
free(p);
}
return 0;
}