在我正在编写的初学者程序中,我必须使用 3 个函数来获取两个参数的和与差。在第三个函数中,我必须将结果存储在两个指针中。我的问题是,我无法成功地将第三个函数集成到 main 中。
我的主要功能如下:
int main ()
{
int num1, num2;
int sumResult, differenceResult;
printf("Please enter a number: ");
scanf("%d", &num1);
printf("Please enter another number: ");
scanf("%d", &num2);
sumResult = CalculateSum (num1, num2);
printf("the result of the sum is %d\n", sumResult);
differenceResult = CalculateDifference (num1, num2);
printf("the result of the difference is %d\n", differenceResult);
return 0;
}
我处理指针的函数:
void CalculateBoth(int num1, int num2, int*sumPtr, int *diffPtr)
{
*sumPtr = num1+num2;
*diffPtr= num1-num2;
}
有什么建议吗?
最佳答案
指针(通常)用于传递的不是参数值,而是参数值所在的内存地址。这允许您修改参数值。
让我们以将 2 添加到 argument 并通过 result 变量传递结果的函数为例:
void WrongAdd2(int argument, int result)
{
result = argument + 2;
}
在这种情况下,您传递结果值,但结果中的任何更改都将是本地的。 相反,指针告诉的不是值,而是值所在的地址。
void Add2(int argument, int *result)
{
*result = argument + 2;
}
这里result“int的地址”,因此*result位于result指向的内存中。
要在函数中使用指针,您应该在内存中为结果留出位置:
int value = 10;
int result = 0;
WrongAdd2(value, result); /* result is still 0. */
Add2(value, &result); /* result is updated and now it is 12. */
因此,您需要使用相同的前两个参数调用CalculateBoth,但结果将通过第三个和第四个参数传递,这些参数是指向要放置输出参数的位置(包含其地址)的指针。
CalculateBoth(num1, num2, &sumResult, &differenceResult);
你说的是:好吧,取num1和num2的值并传递sumResult和differenceResult的地址作为输出参数。
关于c - 关于将指针集成到程序中的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576335/