gpt4 book ai didi

c++ - 如何使用指针符号从数组中的元素中减去?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:38:37 25 4
gpt4 key购买 nike

我收到一条提示,要求我声明并初始化一个包含 4 个 double 的数组,并创建一个指向该数组的指针。然后我应该通过数组符号通过指针将 30.0 添加到数组的第二个物理元素。之后,我应该使用指针表示法通过指针从最后一个数组元素中减去 10.0。然后我应该将指针重新分配给数组的最后一个元素。

我已经尝试弄清楚如何用指针符号减去但没有骰子。我没有遵循需要做的事情。

到目前为止,这是我的代码:

int main () {
double arr[4] = {10.0, 15.0, 20.0, 25.0};
double *p = &arr;
p[1] = 30.0; //array notation
//code should go here for the subtracting ten part

//code should go here assigning pointer to last element of array.
//My idea of how this would look:
p = (p + 3); // or 15.0
//or:
p = arr[3];
}

我试过做类似 (p+3) -=10.0 的事情,但我觉得这是错误的。

我认为结果应该是:我的 arr 元素是 {10.0, 30.0, 20.0, 15.0} 并且 p 指向数组的最后一个元素。

最佳答案

所以数组表示法实际上是指针运算的语法糖。在您的代码中:

p[1] = 30.0;

也可以写成

*(p + 1) = 30.0;

类似地,如果你想“使用指针符号通过指针从最后一个数组元素中减去 10.0”

你会这样做:

double *p = arr
*(p + 3) -= 10.0

解释:

当您声明一个数组时,您是在声明存储在连续内存中的一系列值(这意味着内存块彼此相邻)。您能够访问该数组中不同元素的原因是您知道

  • 数组开始的地方
  • 你想走多远

实际上,数组符号 arr[2](其中 arr 是一个 double 数组)表示“转到内存地址数组 arr,沿着 2 * sizeof(double) 移动,然后给我们存储在那里的值。有趣的是,这正是 *(p + 2) 表示,只是它被分解了——括号内的位表示“沿 2 移动”,星号(“取消引用运算符”)表示给我们值。

关于c++ - 如何使用指针符号从数组中的元素中减去?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56419470/

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