废话int *pI=new int[20]得到的为20个整数的长度的连续空间,你可以用*(pI+0)~*(pI+19)来访问这20个空间,
而连续20次new int得到20个离散的空间,况且:猴子摘玉米的故事听过吧?
20次连续的new int就是一只猴子摘了20次玉米,得到了最后一次的那一个,前面的19个?鬼知道在哪?
而连续20次new int得到20个离散的空间,况且:猴子摘玉米的故事听过吧?
20次连续的new int就是一只猴子摘了20次玉米,得到了最后一次的那一个,前面的19个?鬼知道在哪?
这么说我是真的想错了
我本来考虑节省空间,
即需要一个开一个、这么说来是不行啦,
不知道你有什么高着没有
如果猴子时不时的摘一只玉米,
而且不知猴子到底要摘几只玉米 ,也就是说
不能int *pI=new int[20],
因为空间开大了则浪费
开少了则不够
难道这样就没办法描述了吗
HeapReAlloc之类的函数。
再掰【new】,吃,消化【delete】
…………
As you wish
class link
{
public:
int data;
link * next;
public:
link(){next=NULL;data=-1;}
void Add(link* node){
if( next=NULL) {next=node; node->next=NULL;}
for(link*p=this;p->next!=NULL;p=p->next);
p ->next = node;
node->next = NULL;
}
void print(){
for(link *p=this; p!=NULL; p=p->next ) cout<<p->data<<endl;
}
~link()
{
if( next!=NULL)delete this;
else for(link *p=this;p!=NULL;p=p->next ) delete p;
}
}
void main()
{
link *p,*head;
head = new link;
for(int i=0;i<100;i++)
{
p = new link;
p->data = i;
head->add(p);
}
head->print();
delete head;
}
{
if( next!=NULL)delete this;
else for(link *p=this;p!=NULL;p=p->next ) delete p;
}
}
改为
~link()
{
if( next!=NULL)return;
else for(link *p=next;p!=NULL;p=p->next ) delete p;
}
};