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

求高手,一个有趣函数指针有关问题?调试了好久没解决

2012-10-11 
求高手,一个有趣函数指针问题??????调试了好久没解决?#ifndef TEST_C_#define TEST_C_#include stdio.hv

求高手,一个有趣函数指针问题??????调试了好久没解决?
#ifndef TEST_C_ 

#define TEST_C_ 

#include <stdio.h>


void hello_num(int num)
{
  int i;
  for (i=0;i<num;i++)
  {
  printf("hello world,number is %d\n",i);
  }
}

void hello(void)
{
  printf("hello world,no number\n");
}

void main()

  void (*p)(int)=hello_num;
  void (*q)()=hello;
  int a=5;
  (*p)(a);
   
 
 
  (*q)(a);
   
}


#endif 
在VC6.0编译和运行都正常,接着我不小心试了改了一下
将主函数里void (*p)(int)=hello_num和 void (*q)()=hello;次序换了结果会编译错误,横奇怪,我开始调试,一开始我认为是c语言声明不能 只能在主函数开头,即定义后不能再也不能声明,接着又写了一个简单的程序验证了程序中间可以再声明,一开始的想法错误,不知道怎么回事,求高手解答,调试了好久没头绪?????
void main()

  void (*p)(int)=hello_num;
  
  int a=5;
  (*p)(a);
  void (*q)()=hello;//换了位置
 
 
  (*q)(a);
   
}


[解决办法]
c的定义一定要出现在最前面,你代码文件的后缀是不是改成了.cpp?
[解决办法]

C/C++ code
void main(){    void (*p)(int)=hello_num;     int a=5;  (*p)(a);  void (*q)()=hello;//换了位置     (*q)(a);}
[解决办法]
关于函数指针的几种用法,请参考:
http://blog.csdn.net/pathuang68/article/details/4817046

热点排行