c语言中的函数问题我真的不懂啊~~~特别是那个什么交换的

来源:百度知道 编辑:UC知道 时间:2024/05/12 16:17:20
void swap(char *x,char *y)
{char t;
t=*x;*x=*y;*y=t;
}
main()
{char*s1="abc",*s2="123";
swap(s1,s2);
printf("%s,%s\n",s1,s2);
}
结果是多少,为什么,希望能详细点,非常感谢~~~
能写出具体的答案么?再加上具体的解释,我比较笨~~~

结果是1bc,a23
讲错了。t只能表示一个字符的,貌似c中没有把一个字符串赋值给一个变量t的,所以,访问的时候只能是头两个字符进行互换。

那你惨了,学编程可能不适合你

就是两个数交换啊,t是中间变量。x和y是指针,*x和*y是指针所指的内容。

C/C++中函数对于传过来的形参会另建一组临时变量来存储这些值并对这些临时变量进行操作,所以我们说函数不能改变形参的值。但这并不意味着函数什么值都改变不了。在上面这个函数确实不能够改变传过来的两个指针变量的值,但是我从指针知道几个数字的存储地址,就可以揪着它们地址这跟变量改变它们的值。类似的,在程序中经常会有函数没有改变形参的值,却非法修改了主程序中的一些值的情况。譬如1986年的莫里斯蠕虫病毒,就是利用gets函数不检查越界的性质非法改变了内存中其他程序的值而造成系统崩溃。

学的时候把自己当成笨蛋,程序上说什么你就想什么。很简单的