gpt4 book ai didi

C++ 数组和指针

转载 作者:行者123 更新时间:2023-11-27 23:57:53 25 4
gpt4 key购买 nike

我想知道是否有人可以为我解决这个问题。它涉及指针和数组。

double wages[3] = {10000.0, 20000.0, 30000.0};
double * pw = wages;

在上面的示例中,可以通过以下两种方式访问​​数组中的元素:

wages[1] or 
*(wages+ 1)

然后我偶然发现了另一段代码:

void fill(std::array<double, Seasons> * pa)
{
using namespace std;
for (int i = 0; i < Seasons; i++)
{
cout << "Enter " << Snames[i] << " expenses: ";
cin >> (*pa)[i];
}
}

为什么我们不能写 pa[i] 因为 pa 是一个指针。是不是和上面的例子一样?

最佳答案

pa是指向对象的指针,类型为std::array<double, Seasons>。 .

pa[i]不会让你得到 std::array 中的第 i 个双倍,它将尝试访问另一个 std::array在未为其分配的内存中,将导致未定义的行为。

(*pa)导致对 std::array 的引用对象,它实现了 operator[] .
(*pa)[i]电话 operator[]std::array在上述对象上。

关于C++ 数组和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41261697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com