添加指针和更改值

时间:2014-02-02 04:16:12

标签: c pointers

我有一个代码:

int double(int *x) {
    *x = (*x) + (*x);
    return *x;
}

int main() {
   int i = 10;
   int j;
   j = double(&i);
   printf("i= %d, j = %d\n", i, j);
   return 0; 

}

输出为i = 20,j = 20。 为什么i的价值会改变?

3 个答案:

答案 0 :(得分:2)

因为您将指向i的指针传递给double函数,这允许它更改它的值。这被称为“通过引用传递”。如果你刚刚使用了int而不是指针,那么i的值就不会改变。这被称为“按值传递”。

答案 1 :(得分:0)

i的输出已更改,因为您已在函数*x = (*x) + (*x);中写了double,并使用j = double(&i);进行了调用,因此它将x = x + x使用x = 10,即20

如果发送指针,则允许更改int的内容。

答案 2 :(得分:0)

j = double(&i);

您正在传递i的地址,因此双重功能可以改变它的值。

如果你可以通过,

j = double(i);

i的价值将保持不变。