我以爲我有一個指針體面的知識,直到我決定審查一些所謂的微不足道的例子。字符指針vs數組指針
有一件事我知道的是,聲明數組時說:
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";
}
將字符數組作爲字符串輸出非常常見,因此存在一個<< const char * *的重載,它可以幫您實現。實際上沒有人希望在沒有特殊格式的情況下輸出一個int數組,甚至那麼「怎麼知道何時停止?用char數組,0終止字符串,但0只是int數組中的另一個數字。 – user4581301
謝謝大家! – Bobby