在C中的函数中递增整数

时间:2014-10-19 01:27:32

标签: c

我有这个非常简单的程序

int test(int asdf){
  asdf = asdf + 1;
  return 0;
}

int main ( int argc, char **argv ){

  int a = 1;
  test(a);
  printf("a is %d\n", a);
}

我希望程序输出2,但输出1.出了什么问题?我应该如何传递参考资料?

3 个答案:

答案 0 :(得分:1)

无论你传递的是什么都会被复制......所以你应该传递一些东西,即使在复制时也可以找到原始的a

该东西是指针,其值是a的地址。

如果你在一张纸上写下你朋友的地址,那么无论该纸被复制多少次,持有它的人仍然可以找到原来的房子。

您将指针编写为int* asdfa的地址写为&a。要在有指针时找到对象,需要*asdf

答案 1 :(得分:1)

首先从优秀的C书开始使用指针章节

int test(int* asdf){   // Argument will be pointer to integer
  *asdf = *asdf + 1;   // de-reference and access asdf's content & increment
  return 0;
}

test(&a); // Pass address of a

答案 2 :(得分:0)

C不支持通过引用传递变量,因此您无法执行此操作。

但是,如果您确实将指针传递给变量,那么您可以将变量递增。

看看:

Passing by reference in C