c++ - 打印指针值

标签 c++ pointers

我编写了以下程序来理解整数值与指针值的相加。在我的例子中,指针指向整数。我知道如果 p 是一个指向整数的指针,那么 p+2 就是存储“前面两个整数”(或 2*4 字节 = 8 字节)的整数的地址。下面的程序按我对整数数组的预期工作,但对于字符数组,它只打印空行。有人可以向我解释为什么吗?

#include <iostream>

int main() {

    int* v = new int[10];

    std::cout << "addresses of ints:" << std::endl;

    // works as expected
    for (size_t i = 0; i < 10; i++) {
        std::cout << v+i << std::endl;
    }

    char* u = new char[10];

    std::cout << "addresses of chars:" << std::endl;

    // prints a bunch of empty lines
    for (size_t i = 0; i < 10; i++) {
        std::cout << u+i << std::endl;
    }

    return 0;
}

最佳答案

因为 char * 有特殊意义(C 字符串)所以它试图将它打印为字符串。转换指针让 cout 知道你想要什么:

std::cout << (void *)(u+i) << std::endl;

关于c++ - 打印指针值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099989/

相关文章:

c++ - std::vector: vec.data() 或 &vec[0]

c++ - 将指针转换为数组(int* 到 int[2])

c - 标准 C 是否真的指定指向对象的指针应包含该对象所包含的所有字节的最低地址?

c - 双向结构指针链接,C

c++ - 类构造函数 "C2248: ' std::basic_ios<_Elem,_Traits>::basic_ios':无法访问类 'std::basic_ios<_Elem,_Traits>"中声明的私有(private)成员

c++ - OpenGL 渲染到帧缓冲区导致白色矩形纹理

c++ - CUDA:达到计算能力 3.0 的 blockIdx.x 的最大可能值

c++ - 如何添加到已分配的字符?

c - 访问由 C 中的指针引用的数组

c - 程序因 fclose 而崩溃