我可以分配给新[]的指针
Can I assign to a pointer to an array of chars from new[]
我的课程将成员声明为: 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]
。
相关文章:
- 将指针分配给另一个指针时会发生什么情况?
- C++将一个指针分配给另一个指针时执行的类型检查
- 我似乎无法为指针分配一个数组,然后更改数组的内容
- C++为 void 指针分配一个字符串
- 当我在 C++ 中将派生类的指针分配给指针时,地址会更改
- MPI 集合通信中的指针分配
- 函数指针分配在创建 DLL 后导致错误
- 通过双指针分配指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- 我可以直接为指针分配地址吗?如果是,如何做到这一点
- 为什么为char指针分配内存不会截断char序列
- C++指针分配字符数组的地址
- 将 void 指针分配给另一个 void 指针
- 如何将不同的成员函数指针分配给注册类的不同实例?
- 如何为指针分配特定的内存地址?
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 将指针分配给另一个指针时会发生什么情况?
- 为指向C++中的对象/对象的指针分配堆内存
- 将指针分配给字符串变量中包含的地址
- 当直接分配时,为什么此功能指针分配起作用,而不是与有条件的操作员一起使用