gpt4 book ai didi

c++ - 从指针更改数组中的值?

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

我一直在研究指针以帮助更好地理解。我已将 a 声明为指向长度为 3 的整数数组的指针,并将 b 声明为长度为 3 的整数数组。然后我指向 ab

int main()
{
int (*a)[3];
int b[3] { 2, 4, 6 };
a = &b;
a[0][0] = 8;
// This prints out 8 and 8.
std::cout << a[0][0] << "\t" << b[0];

// This prints out 0x28fecc and 8.
std::cout << a[0] << "\t" << b[0];

return 0;
}

要通过指针 a 访问 b 的元素,我必须像 a 一样执行 a[0][0]数组的数组。这与使用 new 关键字声明指向整数数组的指针相比,我只能输出 c[0]

int* c = new int[3] { 2, 4, 6 };
std::cout << c[0];

这是为什么?

非常感谢,乔治

最佳答案

I have to do a[0][0] as if a was an array of arrays.

确实,a 是一个指向数组的指针,所以数组本身是*a,数组的第一个元素是(*a )[0] 或等效地 a[0][0]

您可能希望 a 是指向数组第一个元素的指针(就像 c 是指向动态数组第一个元素的指针一样):

int * a = b;

现在 a[i] 将按预期成为数组的元素 i

关于c++ - 从指针更改数组中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976938/

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