gpt4 book ai didi

c - 如何使此代码输出 "After swapping: 10, 5"?

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:59 26 4
gpt4 key购买 nike

所以我是编程新手。我在 C 中搜索 void 的不同用途时从 Quora 找到了这段代码。我首先假设它会产生以下结果:

“交换前:5、10交换后:10、5"

但我得到的输出是:

“交换前:5、10交换后:5、10"

相反。

我觉得我需要隔离 “交换(num1,num2);” "printf("交换后: %d, %d\n", num1, num2);"

“int num1= 5, num2 = 10;”

来自 main 函数中的其余语句。

我尝试声明“int num1= 5, num2 = 10 ;”在 main 之外,还尝试将它放在 swap 函数中。那没有用。

// The problem

void swap( int var1, int var2 )
{
int temp;
temp=var1;
var1=var2;
var2=temp;
}
void main( )
{
int num1= 5, num2 = 10;
printf("Before swapping: %d, %d \n", num1, num2);
swap(num1, num2);
printf("After swapping: %d, %d \n", num1, num2);
}

那么,我有什么选择来获得所需的输出:

“交换前:5、10交换后:10、5"

?

最佳答案

你应该将 num1 和 num2 的地址传递给交换函数

void swap(int *var1, int *var2)
{
int temp = 0;

temp = *var1;
*var1 = *var2;
*var2 = temp;
}

void main(void)
{
int num1= 5, num2 = 10;
printf("Before swapping: %d, %d \n", num1, num2);
swap(&num1, &num2);
printf("After swapping: %d, %d \n", num1, num2);
}

关于c - 如何使此代码输出 "After swapping: 10, 5"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56267748/

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