gpt4 book ai didi

c++ - 与堆中的指针和双指针混淆

转载 作者:行者123 更新时间:2023-11-30 05:46:07 25 4
gpt4 key购买 nike

我对指针和双指针感到困惑。

假设我们有这些

int* ptr = new int[2];

在这里,ptr 有一个大小为 2 的数组在堆中的地址,它使 int 数据保持正确?

int** ptr = new int* [2];

这里,ptr有两个指针在堆中的地址,这两个指针可以指向一些int数据。

我的想法对吗?

最佳答案

这几乎是正确的:在第一种情况下,您分配了一个指向堆中足以存储两个 int 的内存块的指针,这可以被认为是一个 int大小为 2 的数组。

第二个 ptr 被分配了一个指向堆中内存块的指针,该内存块足以存储两个指向 int 的指针。但是,在您为它们分配一些值* 之前,这些指针并不特别指向任何东西,就像您为其他指针分配值一样。例如,您可以使第二个 ptr 成为一个包含两个 int 数组的数组,如下所示:

int** ptr = new int* [2];
ptr[0] = new int[2];
ptr[1] = new int[2];

* 第一个代码片段中的 int 也是如此:在您分配它们之前,它们的值是不确定的。

关于c++ - 与堆中的指针和双指针混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29090520/

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