首页 > 解决方案 > 这两个类型测试对象的动态数组声明之间的区别?

问题描述

为什么指针ptr允许我们通过点运算符访问它的成员函数,.而不pt需要间接运算符->

int n = 5;
test* ptr = new test[n];
ptr[1].print();
test* pt[45];
pt[1] = new test(2,3);
pt[1]->print();

标签: c++arrayspointers

解决方案


因为它们是不同的东西。

ptr是一个类型的指针test*,它指向数组的第一个元素test[n],它的元素是类型test,然后ptr[1]给出第二个元素的类型test

pt是一个数组,其元素的类型为test*,然后pt[1]给出类型为 的第二个元素test*


推荐阅读