2 回答
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;
因为返回的参数是一个地址,可以赋值给一个指针变量,该变量有没有初始化都可以.没有初始化的话相当于初始化,初始化了的话相当于重新赋值.
TA贡献1886条经验 获得超2个赞
这是声明,不是定义变量,没有变量,何来初始化?你甚至可以把theCat去掉。
问题补充:
这是函数定义,你前面的是函数声明。theCat指针变量的初始化是由主调函数完成的,FunctionTwo函数不必理会,也不应理会,直接拿来用就行。
添加回答
举报