gpt4 book ai didi

c - 关于将指针集成到程序中的建议

转载 作者:行者123 更新时间:2023-12-04 05:05:21 25 4
gpt4 key购买 nike

在我正在编写的初学者程序中,我必须使用 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 添加到参数并通过结果变量传递结果的函数为例:

void WrongAdd2(int argument, int result)
{
result = argument + 2;
}

在这种情况下,您传递结果值,但结果的任何更改都将是本地的。
指针不是告诉值,而是告诉值所在的地址。
void Add2(int argument, int *result)
{
*result = argument + 2;
}

这里的结果是“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. */

因此,您需要使用相同的前 2 个参数调用 CalculateBoth,但结果将通过第 3 个和第 4 个参数传递,这些参数是指向要放置输出参数的位置(包含它们的地址)的指针。
CalculateBoth(num1, num2, &sumResult, &differenceResult);

你是在说:好吧,取 num1 和 num2 的值并将 sumResult 和 differenceResult 的地址作为输出参数传递。

关于c - 关于将指针集成到程序中的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com