簡體   English   中英

如何使用指針表示法從數組元素中減去?

[英]How can I subtract from elements in an array with pointer notation?

我有一個提示要求我聲明並初始化4個double的數組,並創建一個指向該數組的指針。 然后,我應該通過數組表示法通過指針將30.0添加到數組的第二個物理元素。 之后,我應該使用指針表示法從指針的最后一個數組元素中減去10.0。 然后,我應該將指針重新分配給數組的最后一個元素。

我試圖弄清楚如何用指針表示法減去,但沒有骰子。 我沒有遵循需要做的事情。

到目前為止,這是我的代碼:

int main () {
    double arr[4] = {10.0, 15.0, 20.0, 25.0};
    double *p = &arr;
    p[1] = 30.0; //array notation
    //code should go here for the subtracting ten part

    //code should go here assigning pointer to last element of array.
    //My idea of how this would look:
    p = (p + 3); // or 15.0
    //or:
    p = arr[3];
}

我嘗試做類似(p + 3)-= 10.0的操作,但是我感覺不對。

我認為結果應該是:我的arr元素為{10.0,30.0,20.0,15.0}並且p指向數組的最后一個元素。

因此,數組表示法實際上是指針算法的語法糖。 在您的代碼中:

p[1] = 30.0;

也可以寫成

*(p + 1) = 30.0;

同樣,如果要“使用指針表示法通過指針從最后一個數組元素中減去10.0”

您可以這樣做:

double *p = arr
*(p + 3) -= 10.0

說明:

聲明數組時,是聲明存儲在連續內存中的一系列值(這意味着內存塊彼此相鄰)。 您能夠訪問該數組中不同元素的原因是您知道

  • 數組從哪里開始
  • 您想移動多遠

所以說真的,數組符號arr[2] (其中arrdouble的數組)表示“轉到數組arr的內存地址,沿2 * sizeof(double) ,然后將存儲的值提供給我們。Funnilly足夠了,這就是*(p + 2)含義,只是它被細分了-括號內的位表示“沿2移動”,而星號(“取消引用運算符”)則表示給我們值。

暫無
暫無

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

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