为了账号安全,请及时绑定邮箱和手机立即绑定

关于函数指针的初始化的内容!求助大佬!

关于函数指针的初始化的内容!求助大佬!

米脂 2021-10-04 11:07:25
SimpleCat * FunctionTwo (SimpleCat * theCat);这将FunctionTwo的参数和返回值声明为指针。那么,这两个指针有没有初始化呢?如果有,是如何做到的?那这样的函数SimpleCat * FunctionTwo (SimpleCat *theCat){cout << "Function Two.Returning..." << endl;return theCat;}又是如何初始化的? 主函数中的相关部分是:SimpleCat Frisky;FunctionTwo (&Frisky);这样,参数指针被初始化为Frisky的地址。那函数返回值呢?
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

初始化这个工作可以交给使用这个函数的人来完成,也可以由写这个函数的人来完成;并且在设计这个函数的时候就要确定好,指针参数是在外面初始化还是进了函数在初始化.通常"写函数的人"和"使用函数的人"可能是同一个人,但是扮演着2种不同的角色
这一点在函数说明里要讲清楚,这样使用这个函数的人才知道该传递一个未初始化的指针参数还是传递一个已经初始化的指针参数.
就象MSDN文档里关于函数的说明那样,参数是什么,返回值是什么,函数作用是什么,使用时的注意点都写得清清楚楚.这样,使用这个函数的人就知道该传递一个怎样的参数进去.
假如传递的是一个初始化的参数进去,那么在调用这个函数之前,必须有类似的初始化的操作
SimpleCat *theCat=new SimpleCat;//SimpleCat *theCat=(SimpleCat *)malloc(sizeof(SimpleCat));
或者SimpleCat aCat;SimpleCat *theCat=&aCat;

SimpleCat Frisky;
FunctionTwo (&Frisky);
这个就和"或者部分"的代码差不多,省去了SimpleCat *theCat=&aCat这步,直接在调用函数的时候调用了&aCat;
因为返回的参数是一个地址,可以赋值给一个指针变量,该变量有没有初始化都可以.没有初始化的话相当于初始化,初始化了的话相当于重新赋值.

查看完整回答
反对 回复 2021-10-10
?
MM们

TA贡献1886条经验 获得超2个赞

这是声明,不是定义变量,没有变量,何来初始化?你甚至可以把theCat去掉。
问题补充:
这是函数定义,你前面的是函数声明。theCat指针变量的初始化是由主调函数完成的,FunctionTwo函数不必理会,也不应理会,直接拿来用就行。

查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信