用函数实现交换的疑问

#include<stdio.h>

int main()
{
void swap(int x,int y);
void swap2(char s[]);
int a=5,b=7;
char w[]="ab";
printf("a=%d,b=%d\n",a,b);
swap(a,b);
printf("swap:a=%d,b=%d\n",a,b);
printf("w=%s\n",w);
swap2(w);
printf("swap:w=%s\n",w);
return 0;
}

void swap(int x,int y)
{
int z;
if(x<y)
{z=x;x=y;y=z;}
}

void swap2(char s[])
{
char t;
t=s[0];s[0]=s[1];s[1]=t;
}

运行结果是:

a=5,b=7

swap:a=5,b=7

w=ab

swap:w=ba

很明显,字符串两元素实现了互换,而两个整数则没有,为什么呢?

原文地址:https://www.cnblogs.com/yapollo/p/2494217.html