c - 使用 void 类型过程更改 C 中的变量

标签 c procedure void

我需要弄清楚如何使用 void 类型的函数来更改另一个函数中的值,所以我正在尝试编写一个练习程序,该程序使用一个过程将整数从 5 更改为 4,然后打印新的整数(应为 4)。

#include <stdio.h>
#include <stdlib.h>

void change(int x)
    {
    x = 4;
    }
int main(int argc, char **argv)
    {
    int z = 5;
    change(z);
    printf("%d\n",z);
    return 0;
    }

最后打印 5。我可以看出这里的范围存在某种问题,但我不知道如何解决它。我也无法在程序中打印,因此该解决方案是不可能的。如果有任何帮助,我将不胜感激!

最佳答案

要在另一个函数中更改不在函数范围内的变量,您必须通过指针传递变量。

void change(int *x)
    {
    *x = 4;
    }

然后使用 change(&z) 调用该函数。

如果变量不是通过指针传递的,那么只有函数范围内的变量会改变,而它的参数不会改变。

关于c - 使用 void 类型过程更改 C 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26386425/

相关文章:

MYSQL 创建函数 - 获取 : Not allowed to return a result set from a function

mysql - 程序中的sql语法错误

java - Void 真的无法实例化吗?

javascript - Javascript 中的 void(0) 说明?

c - 显示窗口时 GtkTreeView 返回错误,其他 GtkTreeView 不显示

java - 如何在 JNI 中将 Java 字节数组的内容转换为 C 字符串?

lambda - 将符号映射到值,然后返回一个过程来查找值( Racket )

c++ - 创建具有固定大小长度的 motorola s-record

python - 有谁知道 TikZ 的非 TeX 等价物?

c - 为什么第二个 print 语句从 void 函数获得返回值?