关于C++ 一个程序的解读。

[复制链接]
查看11 | 回复3 | 2009-7-26 10:01:13 | 显示全部楼层 |阅读模式
// pointer to functions
#include
int addition (int a, int b) {

return (a+b);
}
int subtraction (int a, int b) {

return (a-b);
}
int (*minus)(int,int) = subtraction;
int operation (int x, int y, int (*functocall)(int,int)) {

int g;

g = (*functocall)(x,y);

return (g);
}
int main () {

int m,n;

m = operation (7, 5, addition);

n = operation (20, m, minus);

cout <<n;

return 0;
}
int operation (int x, int y, int (*functocall)(int,int)) {
//这句话不懂。
functocall指的是什么?
还有这句是怎么执行的。
int (*minus)(int,int) = subtraction
//那后来的minus又去哪了?

回复

使用道具 举报

千问 | 2009-7-26 10:01:13 | 显示全部楼层
补充:int (*minus)(int,int) = subtraction//那后来的minus又去哪了?这个和int k;int *minus=&k;是一样的道理。后面main函数里有:n = operation (20, m, minus);意思是minus作为这个函数内部的执行函数。具体你可以先回顾一下函数指针的相关章节以及指针的深入内容堆 栈int x,int y都是形参,这个你知道。int (*functocall)(int,int)这个是函数指针,指向函数的地址。比如void func(int i,int j){}int (*functocal...
回复

使用道具 举报

千问 | 2009-7-26 10:01:13 | 显示全部楼层
functocall是函数指针,可以指向为参数一样,返回一样的所有类型函数 比如m=operation(7,5,addition(a,b)),所以m就等于12;而n=operation(20,m,minus(a,b)),所以n就等于20-12=8...
回复

使用道具 举报

千问 | 2009-7-26 10:01:13 | 显示全部楼层
把一个函数指针作为参数传进来...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行