C++内存问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 17:55:28
//利用指针和冒泡排序法:实现一个一维整数数组排序。
#include"stdio.h"
void main()
{
int *p;
int m,j;
for(int i=0;i<10;i++)
{
scanf("%d",*(p+i));
}
for( j=0;j<9;j++)
{
for(int i=j+1;i<10;i++)
{
if(*(p+j)>*(p+i))
{
m=*(p+j);
*(p+j)=*(p+i);
*(p+i)=m;
}
}
}
for( j=0;j<10;j++)
printf("%d",*(p+j));
}

你没有给指针分配内存,你就敢给它赋值,你真胆大,谁敢让你写软件啊!~
事先分配一个数组的大小: p = new char[10];这种方法数组个数是可变的,你可以用一个变量来代替 10

使用指针,千万不能再这么干了。

p还没初始化
#include"stdio.h"

void main()
{
int *p;
int m,j;
p=new int[10];
for(int i=0;i<10;i++)
{
scanf("%d",(p+i));
}
for( j=0;j<9;j++)
{
for(int i=j+1;i<10;i++)
{
if(*(p+j)>*(p+i))
{
m=*(p+j);
*(p+j)=*(p+i);
*(p+i)=m;
}
}
}
for( j=0;j<10;j++)
printf("%d",*(p+j));
}