簡體   English   中英

打印C ++ int指針vs char指針

[英]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指針,您只需獲取地址。

運營商

cout <<

是重載'char *'所以它知道如何處理它(在這種情況下,打印所有字符直到結束一個)。

但是對於int不是,所以它只打印出'內存地址'

指向char的指針與字符串文字的類型相同。 因此,為簡單起見, cout將打印char數組的內容,就好像它是一個字符串一樣。 所以當你這樣做時:

cout << "Some text" << endl;

它不會打印地址,就像您的代碼一樣。

如果您想要修改地址,請將其size_tsize_t

cout << reinterpret_cast<size_t>(ptr) << endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM