首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在函数内部声明函数的一个有关问题

2012-04-07 
在函数内部声明函数的一个问题感到这个问题有讨论的必要,特新开一贴讨论。intmain(){intadd(int,int)intn

在函数内部声明函数的一个问题
感到这个问题有讨论的必要,特新开一贴讨论。
        int   main()
{
        int   add(int,   int);

        int   n   =   add(1,   2);   //   为什么这一步可以执行
          return   0;
}

int   add(int   x,   int   y)
{
        return   x   +   y;
}

  而在下面例子里
#include <iostream>
using   namespace   std;
int   main()
{
      void   swap(int   &,int   &);
      int   a=3,b=5;
      swap(a,b);       //   这一步却不执行
      cout < < "a= " < <a < < "b= " < <b < <endl;
      return   0;
}

void   swap(int   &   i,int   &   j)
{
                int   temp;
                temp=i;
                i=j;
                j=temp;
}

        这两个例子有什么不同呢?为什么在第一个例子里   add(1,   2);可以执行,而在第二个例子里swap(a,b);   不执行呢?

        可能有人不相信,大家可以测试一下。测试办法:
在第一个例子里,   在这一行int   n   =   0;设置一个断点,然后按F11,看是否进入add函数。我测试是进入的。

在int   a=3,b=5;   设置一个断点,按F5运行到这一行,然后按F10(按F11也行)看运行到哪一行?我的是直接运行到     cout < < "a= " < <a < < "b= " < <b < <endl;。
测试环境:英文版Win   Xp   sp2,VC   6.0   (都是D版的)


[解决办法]
兄弟阿,我不是给你回了么。

第二个例子运行的呀。
[解决办法]
偶用VC6...正常运行...
[解决办法]
我手头没有VC6。0

在DEVCPP下没问题。
[解决办法]
路过了.
应该是相同道理的.
[解决办法]
兄弟啊,建议你给swap换个名字。系统里叫swap的东西多了点,你得先排除因为重名,触发什么故障了。
[解决办法]
mingw可以正确编译

热点排行