如何使此代码输出 "After swapping: 10, 5"?
How do I make this code output "After swapping: 10, 5"?
所以我是编程新手。当我在 C 中搜索 void 的不同用途时,我从 Quora 找到了这段代码。我首先假设它的结果是:
"交换前: 5, 10
交换后:10、5"
但我得到的输出是:
"交换前: 5, 10
交换后:5, 10"
相反。
我觉得我需要隔离
"swap(num1, num2);"
"printf("交换后:%d, %d \n", num1, num2);"
或
"int num1= 5, num2 = 10;"
来自 main 函数中的其余语句。
我尝试在 main 之外声明 "int num1= 5, num2 = 10 ;",也尝试将它放在 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 中搜索 void 的不同用途时,我从 Quora 找到了这段代码。我首先假设它的结果是:
"交换前: 5, 10 交换后:10、5"
但我得到的输出是:
"交换前: 5, 10 交换后:5, 10"
相反。
我觉得我需要隔离 "swap(num1, num2);" "printf("交换后:%d, %d \n", num1, num2);"
或
"int num1= 5, num2 = 10;"
来自 main 函数中的其余语句。
我尝试在 main 之外声明 "int num1= 5, num2 = 10 ;",也尝试将它放在 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);
}