如何解决指针不起作用的增量功能
我正在尝试通过使用指针找到给定数字中的位数。
void numDigits(int num,int *result) {
*result = 0;
do {
*result += 1;
num = num / 10;
} while (num > 0);
}
但是,如果我将*result += 1;
行更改为*result++;
,则输出将不再正确,仅给出0。
这是怎么回事?
解决方法
在C / C ++中,前缀++
(或前缀--
)的优先级比取消引用(*
)运算符的优先级高,而后缀++
(或Postfix --
)高于Prefix ++
和*
。
如果p
是指针,则*p++
等效于*(p++)
,而++*p
等效于++(*p)
(前缀++
和{ {1}}是右联想)。
*result++
被解释为*(result++)
。
求值的顺序是先递增,然后解引用指针,如果表达式的行是后缀,则指针的值对于表达式中的行保持不变。
您想要做的是增加指针的取消引用,因此需要在取消引用上加上括号,然后再增加它,例如:(*result)++;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。