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
但是我的程序有点复杂,我不能只返回数字。
答案 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
}