指向堆上数组的指针的地址
Address of a pointer to an array on the heap
我试图在堆上存储字符数组。
下面的代码可以工作
char *array[3];
*array = new char;
还有下面的
char *array[3];
array[0] = new char;
但不是下面的
char *array[3];
array = new char;
我查看了*array
, array[0]
和array
的内容。第一个和第二个使用new
赋值后不包含有效的指针地址,但是第三个包含有效的指针地址。那么是什么让第三个不工作呢?当它们看起来只是存储一些未知的符号(如$,%,-)而不是指针的实际地址时,其他两个是如何工作的?
也许这将有助于详细说明char *array[3]
是什么。这是一个由三个指针组成的数组,指向字符。也就是说,array[0]
、array[1]
和array[2]
都是指向一个字符的指针。因此,*array
和array[0]
是存储指向字符的指针的好地方(实际上是同一个地方),但array
甚至不是指针,它是一个数组,所以试图在那里存储指针是没有意义的。
如果你想在堆中存储字符(使用c风格的字符数组),你应该只执行char *array;
,然后将其初始化为array = new char[3];
然而,由于您正在使用c++,如果您试图存储字符串,建议使用std::string
,或者如果您想要单个字符的列表,建议使用std::vector
。
相关文章:
- CUDA:统一内存和指针地址的更改
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 向指针地址添加 20 个字节偏移量
- 如何理解智能指针的底层指针地址?
- 初学者问题:C++指针/地址 - 和变量之后不是以前?
- 返回数组中值的指针地址
- C++向指针地址添加 4 个字节
- 指针地址的内存偶尔更改了函数前和后返回
- 如何根据指针地址获取指针内容
- C++ 将指针地址传递给函数
- 直接从指针/地址访问数组的元素
- 如何在没有作弊引擎的情况下从其他应用程序获取指针地址?
- 如何保存指针地址,以便另一个指针可以继续处理它
- 间接寻址运算符如何返回带有运算符重载的指针地址
- 使用已删除的指针地址.据我所知,
- 如何保护类外用户可以修改的指针地址?C++
- 多个调用构造函数将更改C 中的成员指针地址
- 类对象指针的向量:如何在指针地址获得价值?C 和SDL_RECT
- Visual Studio C 2K15-在指针地址上获取错误
- 指针地址和参考混乱