gpt4 book ai didi

c++ - 指向 char 的指针与指向数组的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:41 24 4
gpt4 key购买 nike

在我决定复习一些所谓的简单示例之前,我认为我对指针 有一定的了解。

我知道的一件事是,在声明数组时说:

int arr[2] {3, 5};

arr将保存数组中第一个元素的值,因此尝试打印( cout << arr )显然给出了 arr[0] 的地址.即使我的程序使用指针它仍然相似。

我的问题是为什么我可以打印h并且有bonjour作为输出,但我不能对 p 做同样的事情?

当我增加 h++ 时它看起来也像然后再次打印我得到 onjour .指针与 char 有何不同? ?

#include <iostream>
#include <string>

int main()
{
char* h = "bonjour";
int k[4]{3, 4, 5, 6};
int * p = k;

std::cout << "Hello, "<< h << "!\n";
}

最佳答案

当您流式传输h 时,您正在使用this overload :

template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,
const char* s );

但是当你流式传输 p 时,你正在使用 this one :

basic_ostream& operator<<( const void* value );

前者会打印每个字节直到到达\0,后者只会打印地址。也就是说 - 您正在利用 const char* 的一个特例。

关于c++ - 指向 char 的指针与指向数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com