【发布时间】:2015-10-07 04:59:26
【问题描述】:
我试图在 C 中增加一个值并返回旧值,我正在使用指针来执行此操作。问题是即使我使用的是指针,新值仍然是 0。
#include <stdio.h>
#include <stdlib.h>
int increment (int *mem) {
int tmp;
tmp = *mem;
*mem++;
return tmp;
}
int main () {
int a = 0;
printf("The old value of a is \t %d", increment(&a));
printf("The new value of a is \t %d", a);
}
现在,当我运行此方法时,我得到的 a 值相同,即 0;我在第二个 printf 中期待 1。我不知道我在这里做错了什么。
【问题讨论】:
-
试试
(*mem)++然后阅读运算符优先级 -
您真的应该学习如何使用调试器,并在编译器中启用所有警告和调试信息,并阅读有关 C 语法的更多信息。不要写一些你不掌握的语法(所以要加括号就加括号)
-
顺便说一句,我从 1980 年代开始就使用 C 进行编码,而我从未编码
*mem++,因为我觉得它很难读(所以我编码*(mem++)或 @987654325 @ 甚至mem[0]++....),即使它有一些明确的含义