指向字符的指针与指向数组的指针
pointer to char vs pointer to arrays
我以为我对指针有很好的了解,直到我决定复习一些所谓的琐碎例子。
我知道的一件事是,在声明数组时说:
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
时,您正在使用此重载:
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,
const char* s );
但是当你流式传输p
时,你正在使用这个:
basic_ostream& operator<<( const void* value );
前者将打印每个字节直到到达