gpt4 book ai didi

c++ - 如果 `new int` 返回 `int*` ,那么为什么 `new int[n]` 不返回 `int**` ?

转载 作者:行者123 更新时间:2023-12-01 14:36:39 25 4
gpt4 key购买 nike

我很困惑 new intnew int[n] 是如何返回 int* 的。为什么后者不返回 int**

这里是一些上下文:请引用下面来自 Goodrich、Tamassia 和 Mount 的第 2 版的片段中的变量 data。 C++ 教材中的数据结构和算法:

class Vect {
public:
Vect(int n);
~Vect();
// ... other public members omitted
private:
int* data;
int size;
};

Vect::Vect(int n) {
size = n;
data = new int[n];
}

Vect::~Vect() {
delete [] data;
}

最佳答案

(为便于解释,答案包含简化)

In C, a pointer to an array of ints would be of type int**, if I am not mistaken.

你错了。在 C 中,它也将是 int*,更准确地说:int (*)[]

当您声明:int foo[] = { 1, 2, 3 } 时,数组的名称 (foo) 在许多情况下可以有效地 视为指向其第一个元素 (1) 的指针。指向 int 的指针是 int*

Additionally, why are we calling delete[] instead of delete, to delete an int* (data)?

delete 删除单个对象。 delete [] 删除动态数组。

关于c++ - 如果 `new int` 返回 `int*` ,那么为什么 `new int[n]` 不返回 `int**` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62844937/

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