Как вывести символ ** - PullRequest
0 голосов
/ 23 октября 2019

Как можно вывести символ **, полученный из функции?

Скажем, у меня есть:

char** foo = magicFunction();

Магическая функция вернет символ **, но я незнать, как работает функция или длина символа ** и длина символов, которые она содержит. (Я использую библиотеку, которая делает это, и я заменяю функцию на magicFunction ())

Если я пытаюсь получить доступ к свойствам в квадратных скобках:

std::cout << foo[0][0];

все, что я напечаталвыход 0. Когда я пытаюсь увеличить второй доступ к скобкам, я получаю странные символы, и, вероятно, к памяти мне не следует обращаться.

Я также пытался разыменовать:

std::cout << *foo;
std::cout << **foo;

, ноУ меня все еще только распечатывается 0.

Когда я печатаю просто foo:

std::cout << foo;

Я получаю шестнадцатеричный адрес: 0x562e4699dda0 (хотя он меняется каждый раз, когда я запускаю программу)

1 Ответ

3 голосов
/ 23 октября 2019

Если не указано иное, массив указателей будет оканчиваться нулем, а строки обычно оканчиваются символом '\ 0'. Поэтому для печати ваших данных я бы попробовал:

for( char **ptr = foo; *ptr != NULL; ptr++ ) {
    std::cout << *ptr << std::endl;
}
...