所以我是编程新手。当我在C中搜索void的不同用法时,我从Quora中找到了这段代码。我首先认为它将产生以下结果:
“交换之前:5、10 交换后:10,5“
但是我得到的输出是:
“交换之前:5、10 交换后:5、10“
相反。
我觉得我需要隔离其中一个 “交换(num1,num2);” “ printf(”交换后:%d,%d \ n“,num1,num2);”
或
“ int num1 = 5,num2 = 10;”
来自主函数中其余的语句。
我尝试声明“ 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“
?
答案 0 :(得分:2)
您应将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);
}