gpt4 book ai didi

c++ - 指向堆上数组的指针的地址

转载 作者:太空宇宙 更新时间:2023-11-04 16:22:41 24 4
gpt4 key购买 nike

我试图在堆上存储一个字符数组。

下面的代码有效

char *array[3];
*array = new char;

还有以下内容

char *array[3];
array[0] = new char;

但不是下面的

char *array[3];
array = new char;

我查看了*arrayarray[0]array 的内容。在使用 new 分配后,第一个和第二个不包含有效的指针地址,但第三个包含。那么是什么让第三个不起作用?其他两个如何工作,而它们似乎只是存储一些未知符号(如 $、%、-)而不是指针的实际地址?

最佳答案

也许这有助于详细说明什么是 char *array[3]。这是一个包含三个指针的数组,指向字符。也就是说,array[0]array[1]array[2] 都是指向一个字符的指针。因此,*arrayarray[0] 是存储指向字符的指针的好地方(实际上是同一个地方),但是 array 甚至不是一个指针,它是一个数组,因此试图在那里存储一个指针是没有意义的。

如果你想在堆中存储字符(使用 C 风格的字符数组),你应该做 char *array; 然后将它初始化为 array = new char [3];

但是,由于您使用的是 C++,因此建议您在尝试存储字符串时使用 std::string,或者在尝试存储字符串时使用 std::vector你想要一个单个字符的列表。

关于c++ - 指向堆上数组的指针的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15212660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com