【问题标题】:Question about void functions and call by value关于 void 函数和按值调用的问题
【发布时间】:2021-11-25 14:06:05
【问题描述】:

我是刚接触c++两天的新手。

我可以像我写的那样定义多个 void 函数吗? 我应该在哪里修改以实现上述内容?

在调用 callbyvalue 之前:1, 2 调用 callbyvalue 后:1, 2 调用 swap 之前:3、4 调用swap后:4, 3


void Exchange1(int a, int b)
{
    int temp1;

    temp1 = a;
    a = b;
    b = temp1;
}

void Exchange2(int* x, int* y)
{
    int temp2;

    temp2 = *x;
    *x = *y;
    *y = temp2;

int main()
{
    int a, b, x, y;
    a = 1;
    b = 2;
    x = 3;
    y = 4;

    printf("Call-by-value before : %d , %d\n", a, b);
    
    Exchange1(a, b);

    printf("Call-by-value after : %d , %d\n", a, b);

    printf("swap before : %d %d\n", x, y);

    Exchange2(&x, &y);

    printf("swap after : %d %d\n", x, y);

    return 0;
}```

【问题讨论】:

  • 对不起,你的问题到底是什么?我不明白是什么让你困惑
  • 不清楚您的问题到底是什么。当然,您可以定义多个函数。你就是这么做的。 “我应该在哪里修改以实现上述内容?”什么是“上面”?
  • Exchange1 正在处理局部变量。当函数返回时,它对函数内部的ab 的作用将不可见。您可能的意思是使用 void Exchange1(int& a, int& b) 引用 ab
  • “我想实现类似...”的代码不是已经做了吗? Exchange1 不交换任何东西,Exchange2 确实交换了值。这就是你预期的输出,我认为这就是代码的作用
  • 这在我看来像 C。您使用的是哪种 C++ 学习资料?

标签: c++ void


【解决方案1】:

是的,您可以定义多个 void 函数,实际上您可以根据需要编写无限的 void 函数。

请检查您的void Exchange2(int* x, int* y) 功能。

这里缺少右括号。

void Exchange2(int* x, int* y)
{
    int temp2;

    temp2 = *x;
    *x = *y;
    *y = temp2;

int main()

添加右括号后,我得到了这个结果。

现在我的问题是,你在寻找这个答案吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多