c++ - 这两个类型测试对象动态数组声明之间的区别?

标签 c++ arrays pointers

为什么指针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();

最佳答案

因为它们是不同的东西。

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

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

关于c++ - 这两个类型测试对象动态数组声明之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787211/

相关文章:

c++ - 全局指针由优化器解析 - 但引用不是 - 为什么?

c++ - 错误 : no match for 'operator>>' in 'in >> *(arr + ((long unsigned int)(((long unsigned int)i) * 8ul)))'

javascript - 如何在javascript中为两个数组的每个循环使用一个?

c - 在字符指针中取整数值

c - 指向结构的指针在 C 中返回不正确的值

C++ gmock - 将空指针传递给 SaveArg 时会发生什么

c++ - std::merge 不适用于 std::async

javascript - 如何在 C++ vector 上从 javascript 存储和调用 v8::Value

c++ - 复制构造函数产生不正确的旧数组拷贝

c++ - 回滚数据的最有效方法。时光倒流