C++中指针函数一定要有返回类型吗?

 我来答
王沛务开
2020-01-09 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:583万
展开全部
不是指针函数一定要返回类型,而是,一个函数,只要你指定了它有返回类型,那你一定要返回一个符合要求的值,哪怕这个值你根本不需要,这就是规定。
既然你规定了V()这个函数,要返回一个VOID类型的指针,那你必须加上
Return
语句。
不过像你这么写,其实没必要。你本来的想法是,定义一个函数,再定义一个指针,然后用这个指针指向这个函数并调用它。(我猜的)
但是你现在的代码的意思不是这样的,p=v();这句话是说,运行V()这个函数,并把返回值付给P指针。现在程序的错误在编译阶段,所以你还没法看到结果,就算你在V()加上一个返回值,程序可以运行了,你看到结果就是输出了你要的那句话,但其实内在的逻辑是错的。(或者还是不能运行,会在*P的地方报错)
首先,把V()改成:void
v(),不需要返回值。
然后,再让指针P指向V(),语句应该是p=&v();
(我记不清了,很久不写C的指针了,但估计你的书上应该有的。)
最后用P指针调用这个函数。
伍婕池咏
2020-04-11 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:886万
展开全部
这个是编译规则引起的问题,c++编译器在编译中有一个语义分析的过程,语义分析时会检查参数类型和调用类型是否匹配。c编译器不会检查的那么严格,而c++编译器由于存在函数多态性(这个机制是需要根据参数类型寻找正确函数调用的)要求调用参数和函数参数类型必须严格一致。因此许多c函数移植到c++下时需要手工添加强制类型转换。你的问题中comp(&a,
&b),首先&a和&b作为void
*类型传递给compare_int,然后转换成const
int
*类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
捶凶瞻星bw
2020-01-14 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:608万
展开全部
函数指针函数指针
先有函数再有指针
起码要求函数类型和函数指针类型一致
void
*v(){
cout
<<
"hello
world!"
<<
endl;
return
NULL;//<-
}
这里你定义了一个
返回值为void*的函数
然后要再定义一个指向该函数的指针
void*
(*p)()
=
v;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式