分配带指针的数组值

Assigning Array Values w/ Pointer

本文关键字:数组 指针 分配      更新时间:2023-10-16

我正在练习基本的oop w/c ,并且在使用指针时,我发现我不需要取消指针来分配值。为什么是这样?菜单:

class Menu { public:
int MenuCount;
int NumItems;
Drinks *Items;

菜单。cpp

Menu::Menu(Drinks a, Drinks b, Drinks c)  {
std::cout << "How many items would you like on this menu? "; std::cin >> NumItems;
Items = new Drinks[NumItems];
Items[0] = a; Items[1] = b; Items[2] = c; // why is it I can assign values by pointer without dereferencing? 
MenuCount = 3;

对我的理解,我将不得不使用 *在将新对象分配给数组之前使用 *

[]运算符隐式地表示指针。它用数组掩盖了指针算术,并且由于数组腐烂到指针到第一个元素,它在指针上也与数组一样工作。

在您的情况下, Items[0]实际上与 *(Items + 0)相同,因此它已经为您进行解雇。

Menu::Menu(Drinks a, Drinks b, Drinks c)  {
    std::cout << "How many items would you like on this menu? "; std::cin >> NumItems;
    1#  Items = new Drinks[NumItems];
    2#  Items[0] = a; Items[1] = b; Items[2] = c; // why is it I can assign values by pointer without dereferencing? 
    MenuCount = 3;
}
  1. 我们将指针分配给指针,新饮料[]将在堆上创建一个数组并返回指针。

  2. 项目[0]与(*项目 0)相同,它将在此时递增指针解除。