免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1296 | 回复: 3
打印 上一主题 下一主题

[函数] 指向函数的指针小教程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-30 10:15 |只看该作者 |倒序浏览
1,声明:
    long (* funcPtr) (int);//声明了一个指向函数的指针,这个函数带有一个整形的参数,且这个函数的返回值是long型。
Note: *funcPtr外的括号一定要带上。如果不带就成了:
           long * Function (int);//声明一个函数,这个函数带一个整形的参数,且这个函数的返回值是long型。

2,实例program:

//Note: pointer to function
//Author: hjzheng
//Date: 2003.04.30

#include <iostream.h>;

void Square (int&,int&;
void Cube (int&, int&;
void Swap (int&, int &;
void GetVals(int&, int&;
void PrintVals(int, int);
  
int main()
{
        void (* pFunc) (int &, int &;
    bool fQuit = false;

    int valOne=1, valTwo=2;
    int choice;
    while (fQuit == false)
    {
            cout << "(0)Quit (1)Change Values (2)Square (3)Cube (4)Swap: ";
        cin >;>; choice;
        switch (choice)
        {
                case 1:
                        pFunc = GetVals;
                        break;
                  case 2:
                          pFunc = Square;
                          break;
                  case 3:
                          pFunc = Cube;
                          break;
                   case 4:
                           pFunc = Swap;
                           break;
                  default:
                          fQuit = true;
                          break;
               }

               if (fQuit)
            break;
       
            PrintVals(valOne, valTwo);
            pFunc(valOne, valTwo);
            PrintVals(valOne, valTwo);
        }
          
           return 0;
}

void PrintVals(int x, int y)
{
        cout << "x: " << x << " y: " << y << endl;
}

void Square (int & rX, int & rY)
{
        rX *= rX;
    rY *= rY;
}

void Cube (int & rX, int & rY)
{
        int tmp;

    tmp = rX;
    rX *= rX;
    rX = rX * tmp;

    tmp = rY;
    rY *= rY;
    rY = rY * tmp;
}

void Swap(int & rX, int & rY)
{
        int temp;
    temp = rX;
    rX = rY;
    rY = temp;
}

void GetVals (int & rValOne, int & rValTwo)
{
        cout << "New value for ValOne: ";
    cin >;>; rValOne;
    cout << "New value for ValTwo: ";
    cin >;>; rValTwo;
}


Note: 该程序在VC下编译通过.

论坛徽章:
0
2 [报告]
发表于 2003-04-30 12:51 |只看该作者

指向函数的指针小教程

很简单
适合C入门者
不错

论坛徽章:
0
3 [报告]
发表于 2003-04-30 12:56 |只看该作者

指向函数的指针小教程

谢谢斑竹,我会继续努力的!

论坛徽章:
0
4 [报告]
发表于 2003-04-30 15:40 |只看该作者

指向函数的指针小教程

谢,每看一个程序,都有新的体会.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP