1个回答
展开全部
这道题的关键在于以下两点:
指针变量作为函数参数:指针本身的值修改的作用域为函数内部,即在函数内部对指针本身值所做的修改,在函数外部是无效的,所以三次调用fun函数ss仍然是指向的原字符数组的首地址;
字符串的结束符:0,printf打印字符串时,遇到0即认为字符串结束,后续内容不再打印。而ss字符串的最后一个元素是0,定义字符串数组时如果未赋值则元素初始值为0,注意的是这里的0和首字符‘0’是不一样的,ss[9]=0,但ss[0]='0'=48.
再看三次fun的执行过程:
第一次和第三次执行时,由于m1<m2,所以函数内while循环的初始状态p<s,因此while循环一次也不执行。
第二次执行时,初始状态p=ss[9],s=ss[6],这时候会执行一次while循环,即把ss[6]和ss[9]做了替换,后面还会执行一次while循环,把ss[7]和ss[8]做替换。第三次循环的时候while执行的条件就不满足了,也就退出了。
最后打印的时候ss={'0','1','2','3','4','5',0,'8','7','6'}
所以只会输出"012345"
执行结果如下:
printf前ss内部数据如下:
更多追问追答
追问
请问s是一个数组,那么直接写s等于什么呀,
追答
没太明白你的意思~~~~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询