Moh*_*nei 0 c++ arrays pointers
我试图在堆上存储一个字符数组.
以下代码有效
char *array[3];
*array = new char;
Run Code Online (Sandbox Code Playgroud)
还有以下内容
char *array[3];
array[0] = new char;
Run Code Online (Sandbox Code Playgroud)
但不是以下
char *array[3];
array = new char;
Run Code Online (Sandbox Code Playgroud)
我看到的内容*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如果需要单个字符列表.