[英]Printing C++ int pointer vs char pointer
當我運行以下代碼時:
int i[] = {1,2,3};
int* pointer = i;
cout << i << endl;
char c[] = {'a','b','c','\0'};
char* ptr = c;
cout << ptr << endl;
我得到這個輸出:
0x28ff1c
abc
為什么int指針返回地址,而char指針返回數組的實際內容?
這是由於<<
操作員的過載。 對於char *
它將其解釋為空終止的C字符串。 對於int
指針,您只需獲取地址。
指向char
的指針與字符串文字的類型相同。 因此,為簡單起見, cout
將打印char數組的內容,就好像它是一個字符串一樣。 所以當你這樣做時:
cout << "Some text" << endl;
它不會打印地址,就像您的代碼一樣。
如果您想要修改地址,請將其size_t
為size_t
cout << reinterpret_cast<size_t>(ptr) << endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.