簡體   English   中英

c ++,操作指向數組第一個元素的指針

[英]c++, manipulating the pointer to the first element of an array

我寫了一個小代碼來快速解釋我的問題:

    #include<iostream>
    using namespace std;

    int main()
    { int a [10] = { 200, 60, 100, 70, 0, 0, 105, 400, 450, 30};
      int *b = &a[0];
      int *c = &a[9];
      int *d = b+9;

      cout<<&b[9]<<endl
      <<c<<endl
      <<d<<endl;
    return 0;
    }

我不明白為什么我必須使用address-of運算符才能獲得相同的結果。 更具體地說, b[9] (不是&b[9] )不等於&a[9]b+9嗎? 我很困惑,因為b已經被定義為指針,所以b [9]也應該是一個指針,並且它指向與b+9相同的地址對我來說很有意義。

在我的示例中, b[9]實際代表什么?

  • b是整數*
  • b + 9為int *
  • *(b + 9)為int
  • b [9]是int(與上面相同)
  • &b [9]為int *
  • *(&b [9])為int

根據定義, b[9]*(b+9) 也就是說,數組運算符[]將索引和指針求和,然后取消對該指針的引用

所以:

b[9] == a[9]
b+9 ==  &(a[9])

都是真實的陳述。

b[9]是數組的最后一個元素。

&b[9]是指向此元素的指針。

b + 9等效於&b[9]形式。

數組下標運算符包括一個取消引用,這就是為什么您需要使用address-of運算符再次獲取指針的原因。

b[9]的定義與*(b+9)相同。

暫無
暫無

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

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