c++ - 指向 char 数组的指针,指针的值不是地址?

标签 c++ arrays pointers char

这是我写的一个简单的代码。指针p的值是我们知道的数组a的地址。
但是,为什么指针s中没有存放c1的地址呢?
它是如何工作的!

int main(int argc, const char * argv[])
{
    int a[4] = {4,3,2,1};
    int*p = a;
    cout<<&a<<endl;//output 0x7fff5fbff8a0
    cout<<p<<endl; //oupput 0x7fff5fbff8a0

    char c1[4] = "abc";
    char *s = c1;
    cout<<&c1<<endl;//output 0x7fff5fbff894
    cout<<s<<endl; //output abc
    return 0;
}

最佳答案

why does the pointer s not store the address of c1

确实如此。

您看到的是 std::ostream::operator<< char* 过载,将其视为字符串而不是指针。如果你使用

printf("%p\n", s);

您会看到它按预期工作。

关于c++ - 指向 char 数组的指针,指针的值不是地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19809208/

相关文章:

c - 访问结构中的指针

c++ - 这个指针上的 const_cast 是未定义的行为吗?

c++ - 严格弱序困惑

Javascript 低破折号

c++ - std::string 与字节缓冲区(c++ 中的区别)

javascript - 使用 map 方法 Javascript 遍历数组中的所有数组索引

c++ - 为什么内部包含的命名空间不是私有(private)的?

c++ - 如何为 session 中的多个放置请求重用相同的 HTTPS 连接?

C++:为什么我的函数返回的引用地址与取消引用的指针地址不同?

创建一个全局字符指针