c++ - 如何输出一个字符**

标签 c++ pointers char

如何输出从函数接收到的字符**?

假设我有:

char** foo = magicFunction();

魔术函数将返回一个 char**,但我不知道该函数如何工作或 char** 的长度,以及它保存的 char* 的长度。 (我正在使用执行此操作的库,并且我将函数替换为 magicFunction() )

如果我尝试访问带括号的属性:

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

我打印出来的只是0。当我尝试增加第二个括号访问器时,我得到了奇怪的符号,这可能是我不应该访问的内存。

我也试过取消引用:

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

但我仍然只打印出 0

当我只打印 foo 时:

std::cout << foo;

我得到了十六进制地址:0x562e4699dda0(尽管每次运行程序时它都会波动)

最佳答案

除非另有说明,否则指针数组将以 NULL 结尾,而字符串通常以 '\0' 字符结尾。因此,为了打印您的数据,我会尝试:

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

关于c++ - 如何输出一个字符**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58514698/

相关文章:

c++ - 如果我们向它输入一个整数,那么一个字符会给出整数作为输出,但是当一个整数被分配给它时,这不会发生。为什么?

c - 函数 join() 中 char 和 char* 出现问题

c++ - 正确读取文本文件

c++ - '<<' 标记之前的预期构造函数、析构函数或类型转换

C++:关于加载DLL和调用函数的一件小事

c - 指针初始化?对于特定功能

c++ - 将函数指针从一种类型转换为另一种类型的最佳方法是什么?

c++ - OpenGL VBO 和指针的问题

c - 在用 malloc 创建的字符串中逐字符写入?

c - Visual Studio 中的“Ì' or '\0”为空