关于函数指针*优先级的问题

gxy001 2003-09-13 12:31:16
我对函数指针*表示什么不甚理解,什么时候表示的是函数指针,什么时候只是返回值是一个指针而已?
...全文
41 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
scpzhwang 2003-09-13
  • 打赏
  • 举报
回复
就是说可以返回指针值的函数称为指针函数。
比如:
char *trim(char *s)
{
shar *p=s+strlen(s)-1; //P指向s的最后一个字符
while(p-s>=0&& *p==' ')p--; //从后向前搜寻非空格字符
*(p+1)='\0'; //p指向最后一个非空格字符在其后置结束符
return s;
}
注意:指针函数所返回的指针不能指向函数返回后即不存在的对象,
如函数中的自动变量、形参变量等 。
gxy001 2003-09-13
  • 打赏
  • 举报
回复
如果再复杂一点的情况又该如何分析呢?
fwinfwin 2003-09-13
  • 打赏
  • 举报
回复
int (*fun)()是函数指针
int *fun()代表返回值是指针!
gxy001 2003-09-13
  • 打赏
  • 举报
回复
眼前一亮啊~
whz_time 2003-09-13
  • 打赏
  • 举报
回复
还有另一类函数指针考虑过吗?指向类成员函数的指针:看这个例子:
class c
{
protected:
int m_val;
public:
void setval(int val)
{
m_val = val;
}
int getval()
{
return m_val;
}
};
typedef void (c::*memfunc)(int);
void test()
{
c obj;
memfunc f;
f = obj.setval;
obj.(*f)(120);
ASSERT(120 == obj.getval());
}
gxy001 2003-09-13
  • 打赏
  • 举报
回复
UP
gxy001 2003-09-13
  • 打赏
  • 举报
回复
哦~~~原来是这样,有点明白了,小女子天资不够,有劳各位的地方还请多谅解。
Caoyu015 2003-09-13
  • 打赏
  • 举报
回复
结合优先级, 如:
int ( * ( ( *fn )( int ) ) )[]
// fn先和 *结合 代表是一个指针再和(int)结合代表该指针是一个函数指针,有一个int参数,然后再与外面的*结合代表 函数返回一个指针,该指针指向一个数组。 这就是优先级的结合过程了。
gxy001 2003-09-13
  • 打赏
  • 举报
回复
还需更详尽的分析和解答。谢谢。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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