如何从正确存储的函数中获取此值?

时间:2014-09-04 06:49:21

标签: c

int num5(int number)
{
    number = 5;
    return 0;
}

int main()
{
    int number;
    printf("%d", number);
}

我需要我的主要能够将号码存储为5,我只是用打印号码5来测试它。我意识到这个例子我可以做到

return number; //function

int number = num5(number); //main

但是我的程序有点复杂,我不能只返回数字。

3 个答案:

答案 0 :(得分:2)

您正在使用按值传递方法。它在功能中发生了什么变化,它不会影响主程序。这些变化在函数中受到限制。

您需要使用以下方法来执行此操作!

int num5(int *number)
{
    *number = 5;
    return 0;
}

int main()
{
    int number;
    number = num5(&number); // pass the address of the number instead value
    printf("%d", number);
}

当您将变量的地址传递给函数时,无论您在函数中进行哪些更改,该变量都会保留该变量。因此,您将获得最新的指定值!

答案 1 :(得分:1)

您可以在函数中传递指针并取消引用它:

int num5(int* pnum)
{
    *pnum = 5;   // you may want to check that pnum is not NULL
    return 0;    // presumably you don't always return 0 in real code
}

然后

int number = 42;
printf("%d", number); // prints 42
int ret = num5(&number);
printf("%d", number); // prints 5

答案 2 :(得分:0)

正如其他人所说,请参考[a.k.a.地址呼叫]将为您完成工作。为了更安全,不要忘记在传入指针中添加NULL指针检查。此外,按照惯例,main()应在成功完成执行时返回0。

修改后的代码:

int num5(int *number)
{
   if (number)                       //NULL check for incoming pointer
   {
       *number = 5;
   }
    return 0;
}

int main()
{
    int number;
    number = num5(&number); // pass the address of the number instead value
    printf("%d", number);

    return 0;               //for convention
}