永发信息网

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

答案:5  悬赏:80  手机版
解决时间 2021-04-06 13:03
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的,所以,访问的时候只能是头两个字符进行互换。
全部回答
学的时候把自己当成笨蛋,程序上说什么你就想什么。很简单的
C/C++中函数对于传过来的形参会另建一组临时变量来存储这些值并对这些临时变量进行操作,所以我们说函数不能改变形参的值。但这并不意味着函数什么值都改变不了。在上面这个函数确实不能够改变传过来的两个指针变量的值,但是我从指针知道几个数字的存储地址,就可以揪着它们地址这跟变量改变它们的值。类似的,在程序中经常会有函数没有改变形参的值,却非法修改了主程序中的一些值的情况。譬如1986年的莫里斯蠕虫病毒,就是利用gets函数不检查越界的性质非法改变了内存中其他程序的值而造成系统崩溃。
就是两个数交换啊,t是中间变量。x和y是指针,*x和*y是指针所指的内容。
因为void gsd(int a,int b)中的a和b在调用时用实参的值进行拷贝,在函数中交换的只是拷贝过来的副本,所以原来的实参值并没有发生交换操作。而在void gsd(int &a,int &b)中int &类型使a和b的性质发生了变量,它们是“引用变量”,调用时它们就成了实参的“别名”——就是说在函数中操作的是实参本身,所以结果实参发生了交换变化——int &等类型是c++引入的新类型,c是没有的。要搞清楚的是int &是“整型引用”,并不是指针;整型指针是int *。建议你不要用“鄙视”这样的字眼,谁答得不好你大可不理会;这里没有什么都明白的人,都明白的人不到这里来!不明白可续问……
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
自己不了解自己的句子,形容别人不理解自己的
烧烤先油炸再烤和直接炭烤哪个好?
单选题人和动物的根本区别是人和动物的根本区
微信我的收藏里边的音频存在哪里了
出版小说一部,取得稿酬5000元。同年在一家晚
这两天,每天早上睡觉醒来四肢发麻,且都是小
过渡句的意思是什么,过渡句是什么意思
下表是“螺髻山”牌天然优质矿泉水的部分商标
尔雅平台密码忘了怎么办
写信到邛崃监狱地址怎么写,邮编又是多少
Iphone手机有重启快捷键吗
水盆羊肉怎么样
成都红木家具城哪里的质量比较好
单选题在国际上享有盛誉的我国古代杰出的植物
化妆的时候假睫毛怎么卸掉不疼
推荐资讯
网卡和声卡不好使
145度是什么三角形
爱情被误会的句子,蜜蜂(或马蜂)蛰人后会死
多肉植物的句子,赞美多肉植物的,句子都有哪些
明日发配肯木毕齐尔 ,处以流刑。是什么意思
单选题下列语句中画线的熟语使用不恰当的一项
解梦?梦见被小鳄鱼咬,代表着什么
探险者怎么样,福特探险者3.5l还值得购买吗二
爱国励志名言名句
约单顾客预付诚信单达到多少钱可以应邀
天津空客公司和天津火箭公司哪个好?
车仆全能天劲sm10w一40和sm5w-40是全合成机油
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?