在我决定回顾一些所谓的微不足道的例子之前,我以为我对指针有了不错的认识.
我知道的一件事是,在声明一个数组时说:
int arr[2] {3, 5};
Run Code Online (Sandbox Code Playgroud)
arr将保存数组中第一个元素的值,因此尝试打印that(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";
}
Run Code Online (Sandbox Code Playgroud)
流式传输时h,您正在使用此重载:
template< class Traits >
basic_ostream<char,Traits>& operator<<( basic_ostream<char,Traits>& os,
const char* s );
Run Code Online (Sandbox Code Playgroud)
但是当你流式传输时p,你正在使用这个:
basic_ostream& operator<<( const void* value );
Run Code Online (Sandbox Code Playgroud)
前者将打印每个字节,直到它到达a \0,后者将只打印地址.那就是 - 只是一个特殊情况const char*,你正在利用.
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |