赋值后不会变成非动态数组。那是因为你在第二个程序中,对pia执行了++操作,for循环接受后,pia已经指向数组的末尾了,当然不能删除了。同样在第一个程序中定义的lp就是用来对pia数组进行循环赋值的,这样就可以保证不会丢失指向数组首地址的指针。而且第一个程序中,for循环里面的赋值语句应该是*tp=*iter。如果你不想再定义一个指针,可以定义个数组的索引i,然后这样赋值:*(pia+i)=*iter。
在你下面的程序里,指针pia在动态数组赋值的时候已经移动了,最后指向动态数组的最后一个元素的位置,而不是起始位置,当然是不能删除的。
这样就明白tp指针式干什么的了吧
另外在复制元素的地方你写错了
是
*tp=*iter;