c语言中的函数问题我真的不懂啊~~~特别是那个什么交换的
答案:5 悬赏:80 手机版
解决时间 2021-04-06 13:03
- 提问者网友:欲望失宠
- 2021-04-05 13:02
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);
}
结果是多少,为什么,希望能详细点,非常感谢~~~
能写出具体的答案么?再加上具体的解释,我比较笨~~~
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-04-05 14:09
哗珐糕貉蕹股革瘫宫凯结果是1bc,a23
讲错了。t只能表示一个字符的,貌似c中没有把一个字符串赋值给一个变量t的,所以,访问的时候只能是头两个字符进行互换。
讲错了。t只能表示一个字符的,貌似c中没有把一个字符串赋值给一个变量t的,所以,访问的时候只能是头两个字符进行互换。
全部回答
- 1楼网友:等灯
- 2021-04-05 17:22
学的时候把自己当成笨蛋,程序上说什么你就想什么。很简单的
- 2楼网友:想偏头吻你
- 2021-04-05 17:06
C/C++中函数对于传过来的形参会另建一组临时变量来存储这些值并对这些临时变量进行操作,所以我们说函数不能改变形参的值。但这并不意味着函数什么值都改变不了。在上面这个函数确实不能够改变传过来的两个指针变量的值,但是我从指针知道几个数字的存储地址,就可以揪着它们地址这跟变量改变它们的值。类似的,在程序中经常会有函数没有改变形参的值,却非法修改了主程序中的一些值的情况。譬如1986年的莫里斯蠕虫病毒,就是利用gets函数不检查越界的性质非法改变了内存中其他程序的值而造成系统崩溃。
- 3楼网友:毛毛
- 2021-04-05 15:51
就是两个数交换啊,t是中间变量。x和y是指针,*x和*y是指针所指的内容。
- 4楼网友:执傲
- 2021-04-05 14:14
因为void gsd(int a,int b)中的a和b在调用时用实参的值进行拷贝,在函数中交换的只是拷贝过来的副本,所以原来的实参值并没有发生交换操作。而在void gsd(int &a,int &b)中int &类型使a和b的性质发生了变量,它们是“引用变量”,调用时它们就成了实参的“别名”——就是说在函数中操作的是实参本身,所以结果实参发生了交换变化——int &等类型是c++引入的新类型,c是没有的。要搞清楚的是int &是“整型引用”,并不是指针;整型指针是int *。建议你不要用“鄙视”这样的字眼,谁答得不好你大可不理会;这里没有什么都明白的人,都明白的人不到这里来!不明白可续问……
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯