| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include <stdio.h> 
 
/*int swap(int i,int j) 
{ 
        int t; 
        t=i;i=j;j=t; 
        printf("in function i=%d,j=%d\n",i,j); 
 }  
 int main() 
 { 
         int i=4,j=9; 
         swap(i,j); 
         printf("out function i=%d,j=%d\n",i,j); 
 }*/ 
 
void swap(int p1,int p2)  
 { 
         int t; 
         t=p1; 
         p1=p2; 
         p2=t; 
 } 
 
int main() 
{ 
        int a,b; 
        printf("请输入a和b"); 
        scanf("%d %d",&a,&b);  
        printf("交换前a=%d b=%d\n",a,b); 
        swap(a,b); 
        printf("交换后a=%d b=%d\n",a,b); 
 }  
 
 
 
萌新想请教一下为啥同样是交换的函数,swap函数中只是void和int的区别。可是两个结果完全不同,一个可以成功交换位置,一个却不会交换两个变量。 
 
void swap(int *p1,int *p2)  
 { 
         int t; 
         t=*p1; 
         *p1=*p2; 
         *p2=t; 
 } 
 
int main() 
{ 
        int a,b; 
        printf("请输入a和b"); 
        scanf("%d %d",&a,&b);  
        printf("交换前a=%d b=%d\n",a,b); 
        swap(a,b); 
        printf("交换后a=%d b=%d\n",a,b); 
 }  
 
如果给swap函数中的变量变成指针,却可以进行交换。这又是为啥啊。
和int,void没关系 
传入一个指针,操作的是地址,可以改变传入参数的值 
而传入一个值,操作的是它的拷贝,是不可以改变的 
 
 
 |   
 
 
 
 |