谁能帮我分析一段很小的vector* (*seq_ptr)(int)函数指针应用?

独行侠周游世界 2006-01-11 05:30:11
谁能帮我分析如下的函数:

const vector<int> * (*seq_ptr)(int) 是函数指针.

bool seq_elem(int pos,int & elem, const vector<int> * (*seq_ptr)(int))
{

//声明一个vector<int>指针并用seq_prt(pos)初始化
const vector<int> *pseq = seq_ptr(pos); //获得一个函数指针 对吗???

//pseq 存放的是seq_ptr(pos)函数的地址?

//没有获得有效函数指针,返回false
if (!pseq)
{
elem = 0;
return false;
}

elem = (*pseq)[pos-1]; //这句代码不明白,是获得了第一个函数的地址吗????
return true;

}

假如有如下函数
const vector<int> * fiban_seq(int size);
const vector<int> * lucc_seq(int size);
const vector<int> * lll_seq(int size);
const vector<int> * kill_seq(int size);
const vector<int> * dekker_seq(int size);
到底寻址到哪个函数的地址,(鬼才知道)我也不考虑
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸学堂 2006-01-13
  • 打赏
  • 举报
回复
楼主理解错了,函数指针与变量指针是不同的

const vector<int> * (*seq_ptr)(int)
应该这么说seq_ptr是一个函数指针,该函数指针指向一个输入参数是int,返回参数是const vector<int>变量的指针的函数。

所以下面的理解是

//声明一个vector<int>指针并用seq_prt(pos)初始化
const vector<int> *pseq = seq_ptr(pos); //执行函数seq_ptr(pos),输入参数是pos,返回值是const vector<int>类型

//pseq 存放的的const vector<int>类型数据的地址

//没有获得有效(不是函数指针是const vector<int>)指针,返回false
if (!pseq)
{
elem = 0;
return false;
}

elem = (*pseq)[pos-1];// 这是获取const vector<int>对象中的第[pos-1]个元素的值

return true;
cunsh 2006-01-11
  • 打赏
  • 举报
回复
//pseq 存放的是seq_ptr(pos)函数的地址?
-----------------------

存放的是函数返回的指针中的那个地址啊.
qfeng_zhao 2006-01-11
  • 打赏
  • 举报
回复
感觉楼主理解有些问题
const vector<int> * (*seq_ptr)(int) 是函数指针.
-------------------
是函数指针,指向的函数参数为一个int,返回值为const vector<int> *

bool seq_elem(int pos,int & elem, const vector<int> * (*seq_ptr)(int))
{

//声明一个vector<int>指针并用seq_prt(pos)初始化
const vector<int> *pseq = seq_ptr(pos); //获得一个函数指针 对吗???
---------------------------------------------------
这就是一个函数调用,将返回值赋给pseq,参见上面函数指针说明
seq_ptr指向调用该函数时传递给它的那个函数

//没有获得有效函数指针,返回false
--------------------------
不是函数指针,而是返回值不为空
if (!pseq)
{
elem = 0;
return false;
}

elem = (*pseq)[pos-1]; //这句代码不明白,是获得了第一个函数的地址吗????
-----------------------------------------
既然知道pseq函数调用返回值,类型为const vector<int> *pseq ,所以可以知道取得是第pos个元素

return true;

}
  • 打赏
  • 举报
回复
elem = (*pseq)[pos-1]; //这句代码不明白,是获得了第一个函数的地址吗????

这句代码是 获得 seq_prt(pos -1) 的函数地址吗????

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧