Visual Studio не показывает полный массив при динамическом создании массива указателей - PullRequest
0 голосов
/ 04 января 2019

Мой код:

#include "pch.h"
#include <iostream>

using namespace std;

   int main()
   {
      char** pptr = new char*[5];

      for (int i = 0; i < 5; i++)
      pptr[i] = new char[5];
   }

Что я хочу сделать, так это то, что pptr теперь указывает на начало массива из 5 указателей, каждый из которых указывает на начало массива из 5 символов.

Я поставил точку останова в конце основной функции и добавил pptr для наблюдения, и он хранит только один указатель. Почему это происходит и как мне сделать это правильно?

enter image description here

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Это знание по умолчанию о вашем типе указателя в Visual Studio. Вы указываете в коде, что char** pptr является указателем, но он не может знать, насколько велик.

Чтобы исправить это, вы можете добавить часы на pptr[0], а затем вы можете указать, что они имеют «размер» 5, изменив его на pptr[0],5. Кроме того, если размер является переменным, вы можете сделать «ptr [0], [size]», где size - это выражение, которое оценивает количество отображаемых элементов.

0 голосов
/ 04 января 2019
// #include "pch.h"
#include <iostream>

using namespace std;

int main(){
    char** pptr = new char*[5];

    for (int i = 0; i < 5; i++)
        pptr[i] = new char[5];

    for(int i=0;i<5;i++){
        char ch='A';
        pptr[0][i]=ch;
    }

    for(int i=0;i<5;i++){
        cout<<pptr[0][i]<<" ";
    }
}

Теперь указатель pptr [0], указывающий на массив символов. Надеюсь, что это поможет.

0 голосов
/ 04 января 2019

Ваша программа делает то, что вы хотите, но отладчик не может знать количество элементов, он просто знает, что это указатель, поэтому он записывает содержимое этого указателя.

Я не знаю, какой отладчик вы используете, но, вероятно, когда вы отображаете значения, вы можете изменить char** на char * [5] `, чтобы увидеть все

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...