您好我在c ++中有关于指针和数组的一些问题:
当我想在函数中传递一个指针数组时,我必须写:
foo(test *ptest[])
Run Code Online (Sandbox Code Playgroud)
对?
当我想删除一个指针数组时,确实如此
delete ptest;
Run Code Online (Sandbox Code Playgroud)
一切都适合我?
当我将指针传递给另一个类并且第一个类进行删除时,指针在所有类中都是deletete吗?
我必须始终创建一个恒定大小的数组吗?
首先,忘记数组和指针,告诉我们你真正想要实现的目标.您可能最好使用std::vector<T>并通过(const)引用传递它,从而节省您从C继承的手动资源管理和疯狂的数组到指针衰减规则的所有麻烦.
现在回答你的问题:
当我想在函数中传递一个指针数组时,我必须写:
Run Code Online (Sandbox Code Playgroud)foo(test *ptest[])对?
是的,但请记住,数组参数总是由编译器重写为指针.您的代码相当于:
foo(test **ptest)
Run Code Online (Sandbox Code Playgroud)
这意味着有关阵列大小的所有信息都已丢失.继续:
当我想删除一个指针数组时,确实如此
Run Code Online (Sandbox Code Playgroud)delete ptest;一切都适合我?
不可以.如果您获得via new[],则必须通过via发布delete[],否则您将获得未定义的行为.请注意,删除指针数组只会删除数组本身,而不是存储在数组中的指针所指向的任何对象.
再次:忘掉数组和指针,并使用C++标准库提供的工具.