【问题标题】:Why use address of variable to change the value of a variable? [duplicate]为什么要使用变量的地址来改变变量的值? [复制]
【发布时间】:2019-08-30 05:19:50
【问题描述】:

在我的演讲幻灯片的page 15 中有一个例子。

int x = 10;
increment_int(x); // can’t change the value of x
increment2_int(&x); // can change the value of x

我不明白为什么第一个函数increment_int(x) 不能改变x 的值。虽然我不知道这些函数究竟做了什么,但我猜它们是在增加一些参数。

【问题讨论】:

    标签: c pointers


    【解决方案1】:
    • increment_int 是按值传递的。如果函数 increment_int 改变 它的参数的值,它只反映在它的本地副本中。 调用者看不到更改。
    • increment2_int 是通过引用传递的。你传递 x 的地址而不是 此函数的 x 值。这个函数改变了 在调用方也反映的指定地址。

    【讨论】:

    • 也许是个挑剔的人,但 C 中的 everything 都是按值传递的。指向x 的指针被传递给increment2_int。由于它是按值传递的,因此在increment2_int 内部制作了该指针的副本,该指针和&x 指向同一个东西,因此当x 在increment2_int 中被取消引用时,它指向@987654327 @ 在调用者中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多