我是一个初学者,在学习中遇到下面的源代码:
#include <iostream>
using namespace std;
void secret(char* s)
{
 while(*s!='\0')
 {
  if (*s>96&&*s<122)
  {
   *s=*s+1;
  } 
  else if(*s==122)
  {
   *s='a';
  }
  s++;
 }
}
void desecret(char* s)
{
 while(*s!='\0')
 {
  if (*s>97&&*s<123)
  {
   *s=*s-1;
  } 
  else if(*s==97)
  {
   *s='z';
  }
  s++;
 }
}
int main()
{
 char st[]="Tell you a secret!";
 cout<<"原始字符串:"<<st<<endl;
 secret(st);
 cout<<"加密字符串:"<<st<<endl;
 desecret(st);
 cout<<"解密字符串:"<<st<<endl;
 return 0;
}
对此源代码有几个疑问,请高手帮忙解答,先谢过了。
1、函数secret()和desecret()定义时的变量为char*类型,而在主函数中调用时给的变量是char类型,怎么理解?
2、函数secret()和desecret()定义时的变量为char*类型,函数中对变量使用用的确实数字,怎么理解?
3、主函数最后的return 0是什么意思啊? 

解决方案 »

  1.   

    1、char*为指针,主函数给的是char类型,在被调函数中,char类型可自动转换为char*,为char的第一个首字母的指针。
    2、确实的数字为ASCⅡ码,每一个ASCⅡ码都对应一个字母。比如A的ASCⅡ码为65,a的ASCⅡ码为97.
    3、主函数最后的return 0就是返回,退出主函数的意思。
      

  2.   

    回去看下数组和指针吧。
    st是数组名,是代表一个地址
    *是取这个指针指向地址中的值,用字符与数字比较是比较字符的ASCII码
    因为main函数返回值是int类型的,你必须返回一个值,一般是返回0,你返回其他值应该是可以的。如果定义成void main 就不用返回了!可能表达的不清楚,你看书肯定明白了
      

  3.   

    谢谢楼上的两位,就是说字符型和指针型之间可以自动转换,哪么主函数中的secret(st)是secret(Tell you a secret!)还是 secret(* Tell you a secret!)啊?
    int main() 


    return 0;//这里是主函数int类型决定的,就是语法问题,没什么实际意义是吗?