大佬教程收集整理的这篇文章主要介绍了c – 使用双指针进行动态分配,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我这样做:
Toy** ptr; ptr=new Toy*; ptr[0]=new Toy_remote_car[1]; ptr[1]=new Toy_battery_car[1];/*this is completely wrong according to my teacher because i never created ptr[1]. Instead this is a misuse of memory according to him.*/
上面的代码(ptr = new Toy *)正在创建一个类型为Toy(ptr [0])的指针,它包含派生类Toy_remote_car的对象.
现在我想写这样的代码:
– >不应预定义玩具类型指针的数量.
– >相反,我会调用add_toy函数,它会创建一个指向我想要的对象类型的ptr.此外,如果我再次调用add_toy函数,它不应该将数据分配给previos ptr,但它应该创建一个新的ptr.以下约定可能有所帮助:
ptr[0]=new Toy_remote_car[1]; /*we want to add more toys so add_toy function called. A check is applied.*/ /*The check checks that ptr[0] already contains a value so it creates another pointer ptr[1]*/ ptr[1]=new Toy_battery_car[1];
– >此外,我将能够访问所有以前的数据.简而言之:
ptr[0]//contains one type of data. ptr[1]//contains another type. //and so on
– >所以每当添加一个新玩具时它会自动创建一个类型为Toy的指针(ptr).
请在这方面帮助我.
谢谢
Toy **ptr = new Toy *[n];
其中n包含您想要的玩具指针数量.增长阵列很难,但可以做到:
// Add x to toypp,an array of n pointers // very stupid,linear-time algorithm Toy **add_toy(Toy *x,Toy **toypp,size_t n) { Toy **new_toypp = new Toy*[n+1]; // copy the old array's contents for (size_t i=0; i<n; i++) new_toypp[i] = toypp[i]; toypp[n] = x; // clean up delete[] toypp; return new_toypp; }
请注意,如果分配失败,旧的toypp及其中的所有指针都不会被清除.实际上,如果你想要一个增长的数组,请使用向量< Toy *>代替:
vector<Toy*> toy_ptrs(n);
不要忘记删除每一个玩具*,并使用第一种方法删除[]玩具**.
处理各种数据可以通过继承来完成.
以上是大佬教程为你收集整理的c – 使用双指针进行动态分配全部内容,希望文章能够帮你解决c – 使用双指针进行动态分配所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。