【问题标题】:Passed variable reference in function not incrementing在函数中传递的变量引用不递增
【发布时间】:2019-04-08 00:47:11
【问题描述】:

作为一个 C++ 初学者,我被介绍了指针,我想知道为什么下面的程序不能正常工作:

#include "pch.h"
#include <iostream>

void test(int* variable)
{
    variable++;
}


int main()
{

    int someNumber = 5;

    test(&someNumber);

    std::cout << someNumber;

    return 0;
}

程序打印 5,据我了解,它应该打印 6。谁能帮帮我吗?

【问题讨论】:

  • 因为你是在递增指针,而不是它指向的值。请改用++*variable;
  • variable++ 递增指针,而不是指针指向的内容。请改用(*variable)++
  • 您不是通过引用传递,而是通过指针(按值)。
  • 你可能打算写(*variable)++;,增加指针的值会有所不同。
  • @Matt *p++*(p++) 相同;它递增p,而不是*p

标签: c++ function pointers parameters


【解决方案1】:

以下是使用两种不同方法完成任务的解决方案。

void test(int* variable)
{
    (*variable)++;
}
void test(int& variable)
{
    variable++;
}

这些解决方案中的每一个都将完成您的任务。 要调用第二个函数,请使用test(variable)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2015-03-14
    • 2016-05-18
    相关资源
    最近更新 更多