簡體   English   中英

c ++指針算術

[英]c++ pointer arithmetic

int a[5];

cout << &a[1] << " " << &a[0] << endl;
cout << (&a[1] - &a[0]);

在上面的代碼中,為什么&a [1] - &a [0]等於1而不是4? 因為我們有一個int數組,所以這些地址之間不應該有4個字節嗎?

不,指針差異在元素中,而不是以字節為單位。

指針按類型的大小遞增。 原因是因為你想指向下一個項目。 所以再舉幾個例子。

int a[5];
int *ptr=&a[0];

// ptr is now pointing at first element.

ptr+3; // now its pointing at 3rd element.

以字節為單位:(現場直播https://ideone.com/CrL4z

int a[5];

cout << (a+1) << " " << (a+0) << endl;
cout << (reinterpret_cast<char*>(a+1) - reinterpret_cast<char*>(a+0));

暫無
暫無

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

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