C++问题请教下各位

来源:百度知道 编辑:UC知道 时间:2024/09/20 22:54:42
#include <iostream>
#include <string>
void f(char *s,char *t)
{
char k;
k= *s; *s=*t; *t=k;
s++; t--;
if (*s) f(s,t) ;
}
int main()
{
using namespace std ;
char str[10]= "abcdefg" , *p;
p=str+strlen(str)/2+1;
f(p,p-2);
cout << str << endl;
char response;
cin >> response;
return 0;
}
请问下输出结果是什么,if (*s) f(s,t) ;是什么意思呢??
这步是干嘛用的呢~~麻烦说下过程!! p=str+strlen(str)/2+1;
f(p,p-2);

输出结果:gfedcba
if(*s)f(s,t)是在满足条件的情况下进行函数的递归调用。
意思是:如果*s为真,则调用函数f(s,t)。
当指针指向\0时,if的条件不满足~~
此函数的作用是:利用函数的递归调用将字符数组中的字符实现逆置。

字符数组结束符 是\0 ascii码就是0
所以当s只向字符串结尾的时候 就相当于if(0)
字符串到了结尾 自然就不需要执行函数
0 与非0 在c中表示 假 和 真

饭还是给你留着
是别人喂 还是自己吃 看着办

输出结果自己可以调试。
if (*s)的意思就是如果if(*s)成立就执行f(s,t),其实就是一个简单的递归调用。