我可以分配给新[]的指针

Can I assign to a pointer to an array of chars from new[]

本文关键字:指针 分配 我可以      更新时间:2023-10-16

我的课程将成员声明为: char (*buf)[]。据我了解,这是一个指向具有不确定维度的字符数组的指针。在我的逻辑中,我想动态分配此数组的内存,为:

buf = new char[100];

但是新返回char *,因此编译器向

抱怨
 error: assigning to 'char (*)[]' from incompatible type 'char *'

有没有办法将此指针存储在指向字符阵列的指针中?如果没有,能够像我上面一样声明指针的用途是什么?

我认为,如果我可以存储数组指针,然后将编译器警告我,如果我致电delete(没有[](,那将是有用的。

您可以做自己想做的事情:

char (*buf)[];
buf = (char (*)[])new char[100];
(*buf)[0] = 5; // Assignment
//delete buf; <- compiler warning
delete[] buf;

在StandardEse中,buf是"指向char的未知数数组的指针"。您无法为其分配新表达的结果(因为您无法动态分配未知界限的数组(。

您可以将动态分配的内存分配给" char数组的指针",如果数组为二维,例如char (*ptr)[2] = new char [100][2]

与此相关的标准组有一个空旷的问题。如果采用了建议,则不允许您的帖子中的示例,但它将允许char (*ptr)[] = new char [100][2]