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

这个函数指针怎么不能用?

thanatus 发布于 2008-09-18 01:27, 507 次点击
为什么下面这段代码执行起来出错,而Dev-c++4.9.9.2编译通过没有问题(也没有警告)该程序是我随手写的(小弟初学c++),
目的很简单,交换数组a[2]的两个元素值.

#include <iostream>

using namespace std;

int swap(int &, int &);

int main ()

{
   
  int (*pfn)(int &, int &)=0;
   
  int a[2]={0,1};

  cout<<"a[0]="<<a[0]<<"\t"<<"a[1]="<<a[1]<<"\t"<<endl;

  pfn(a[0],a[1]);
  
  cout<<"a[0]="<<a[0]<<"\t"<<"a[1]="<<a[1]<<"\t"<<endl;
  
  system("pause");
  
  return 0;
  
  }
  
int swap(int& x, int& y)
  
  { int temp = x;
  
    x=y;
   
    y=temp;
   
    return 0;
   
  }

这个程序不利用函数指针pfn是没有问题的,可是用pfn以后运行时候报错,请教高手指点~谢谢拉~
4 回复
#2
thanatus2008-09-18 01:37
晕死,头昏的厉害,少了一句: pfn=swap;
没有指向对象的函数指针编译也可以通过呀~
#3
zzt_4282008-09-18 14:56
回复
你定义了一个指向函数的指针,,但是这个指针装的不是swap()的地址,,应该在pfn(a[0],a[1]);前面加上 pfn=Swap;
#4
thanatus2008-09-19 11:33
[bo][un]zzt_428[/un] 在 2008-9-18 14:56 的发言:[/bo]

你定义了一个指向函数的指针,,但是这个指针装的不是swap()的地址,,应该在pfn(a[0],a[1]);前面加上 pfn=Swap;


唉,程序一定要上手写啊,看着都明白,可是动手写就丢三落四的~呵呵~
1