关于双重指针的问题
不理解如下代码中 Person ** person = new Person*[3]; 等号左边的第二个*怎么理解
#include
#include
using namespace std;
class Person
{
public:
virtual void func() = 0;
};
class Student :public Person
{
public:
void func()
{
cout << "Student::func()" << endl;
}
};
void test01()
{
Person ** person = new Person*[3];
}
int main()
{
test01();
system("pause");
return 0;
}
type * arr=new type[3];
这是申请动态数组的一般格式
把type=Person*
带进去即可
指针的指针
就类似二维数组
指针本身指向一个指针,被指向的指针指向一个地址
Person*[3];是个指针数组,它定义了一组指针
而** person就是指向指针的指针
你也可以定义*person指向Person*[3],但那样一来person本身是指向数组的地址,*person是数组的值,而这个值本身也是一个指针,指向的是指针的地址
如果你要访问实际的值,就没法访问了
那么如果一开始定义成**person,那么person指向的是数组,*person是指针地址,**person就是实际的值了
就是指针的指针啊。
第一个信号表示这是一个数组,第二个星号表示数组的元素是个指针对象
他是想申请一个动态二维数组
http://t.csdn.cn/TmWrq
昨天刚搞明白,做了一个总结,你可以瞅瞅