注册 登录
编程论坛 C++教室

初学者,关系函数声明!

lvyan 发布于 2008-04-20 00:14, 785 次点击
#include<iostream>
using namespace std;

int main()
{ void swap(char *x ,char *y );
   char *ap="how are you?";
   char *bp="ok!";
    void swap(char *x ,char *y );
   cout<<"ap="<<ap<<endl;
   cout<<"bp="<<bp<<endl;
   swap(ap,bp);
   cout<<"swap(ap,bp)"<<endl;
   cout<<"ap="<<ap<<endl;
   cout<<"bp="<<bp<<endl;
   return 0;
   }

void swap(char *x,char *y)
{  char *t;
   t=x;x=y;y=t;
   
   }

程序为交换两个字符串.  
  为什么我加了函数声明,却没有交换;
   反而去掉函声明却正常.  
       我刚开始学C++,请高手指教!   
6 回复
#2
kaithwin2008-04-20 01:13
没有声明可以用是因为swap是c++内部的函数,不然你换一个名字试试
至于为什么不能交换是因为在子函数中只交换了实参的局部副本,不会改变实参
#3
lvyan2008-04-20 01:42
c++内部函数?  有哪些啊.?
  用指针不能交换吗? 为什么引用可以交换而指针不行啊..?
  希望哪位朋友能帮助一下我... 在此先谢了.
#4
kaithwin2008-04-20 12:46
自己找书看吧
应该每本c++的书都有,很典型的例子
#5
无业烟民2008-04-21 22:37
#include<iostream>
using namespace std;

int main()
{
   char *ap="how are you?";
   char *bp="ok!";
  
   cout<<"ap="<<ap<<endl;
   cout<<"bp="<<bp<<endl;
 
   swap(ap,bp);
   cout<<"swap(ap,bp)"<<endl;
   cout<<"ap="<<ap<<endl;
   cout<<"bp="<<bp<<endl;
   return 0;
   }

void swap(char *x,char *y)
{  char *t;
   t=x;x=y;y=t;
   
   }
#6
aipb20072008-04-21 22:50
[bo]以下是引用 [un]kaithwin[/un] 在 2008-4-20 01:13 的发言:[/bo]

没有声明可以用是因为swap是c++内部的函数,不然你换一个名字试试
至于为什么不能交换是因为在子函数中只交换了实参的局部副本,不会改变实参


正解
#7
树上的番茄2008-04-28 22:09
学习了。。。
1