关于c ++中指针数组的问题

ewg*_*egw 0 c++

您好我在c ++中有关于指针和数组的一些问题:

当我想在函数中传递一个指针数组时,我必须写:

foo(test *ptest[])
Run Code Online (Sandbox Code Playgroud)

对?

当我想删除一个指针数组时,确实如此

delete ptest;
Run Code Online (Sandbox Code Playgroud)

一切都适合我?

当我将指针传递给另一个类并且第一个类进行删除时,指针在所有类中都是deletete吗?

我必须始终创建一个恒定大小的数组吗?

fre*_*low 5

首先,忘记数组和指针,告诉我们你真正想要实现的目标.您可能最好使用std::vector<T>并通过(const)引用传递它,从而节省您从C继承的手动资源管理和疯狂的数组到指针衰减规则的所有麻烦.

现在回答你的问题:

当我想在函数中传递一个指针数组时,我必须写:

foo(test *ptest[])
Run Code Online (Sandbox Code Playgroud)

对?

是的,但请记住,数组参数总是由编译器重写为指针.您的代码相当于:

 foo(test **ptest)
Run Code Online (Sandbox Code Playgroud)

这意味着有关阵列大小的所有信息都已丢失.继续:

当我想删除一个指针数组时,确实如此

delete ptest;
Run Code Online (Sandbox Code Playgroud)

一切都适合我?

不可以.如果您获得via new[],则必须通过via发布delete[],否则您将获得未定义的行为.请注意,删除指针数组只会删除数组本身,而不是存储在数组中的指针所指向的任何对象.

再次:忘掉数组和指针,并使用C++标准库提供的工具.

  • +1,有一些问题,std :: vector只是*解决*. (2认同)