[英]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.