指向数组的指针,表示的元素在运行时会混乱的变化?
类声明部分:class InsertSort
{
private:
int *p;
public:
void Fun();
InsertSort();
~InsertSort();
};
类定义部分
#include<iostream>
using namespace std;
#include"insertSort.h"
void InsertSort::Fun()
{
int i,j,t,temp;
int len=7;
for(i=1;i<=len-1;i++)
{
for(j=0;j<=i-1;j++) //调试的时候一到这句,p[6]就变成了6,不是1。搞不清楚为什么会莫名奇妙的变化?
{
if(p[i]<p[j])
{
temp=p[i];
t=j;
while(i>=t+1)
{
p[i]=p[i-1];
i--;
}
p[j]=temp;
}
}
}
for(i=0;i<=6;i++)
cout<<p[i]<<" "<<endl;
}
InsertSort::InsertSort()
{
int a[7]={5,6,3,9,2,7,1};
p=a;
}
InsertSort::~InsertSort()
{
// delete[]p; //如果这里释放p指针变量,却会出现错误,这是为什么?是因为本来就没有动态开辟一个数组给p,这里的p=a仅仅是把a数组的首地址传给了p?
cout<<"析构函数运行了"<<endl;
}
主函数:insertSort.cpp
#include<iostream>
using namespace std;
#include"insertSort.h"
int main()
{
InsertSort obj;
obj.Fun();
return 0;
}