簡體   English   中英

指針不起作用的增量函數

[英]Increment function with pointers not working

我試圖通過使用指針找到給定數字中的位數。

下面的代碼將給出正確的輸出,

void numDigits(int num, int *result) {
  *result = 0;

  do {
    *result += 1;
    num = num / 10;
  } while (num > 0);
}

但是,如果我更改*result += 1; 行到*result++; ,輸出將不再正確,只給出 0。

這里發生了什么?

在 C/C++ 中,Prefix ++ (或 Prefix -- )的優先級高於取消引用( * )運算符,Postfix ++ (或 Postfix -- )的優先級高於 Prefix ++*

如果p是一個指針,那么*p++等價於*(p++)++*p等價於++(*p) (前綴++*都是右結合的)。

*result++被解釋為*(result++)

評估的順序是增量為先,然后取消引用指針,如果表達式中的行是后綴,則指針的值保持不變。 您要做的是增加指針的取消引用,因此您需要將括號放在取消引用上然后增加它,如下所示: (*result)++;

暫無
暫無

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

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