若有如下函数:
struct Student{
double height;
double weight;
double size;}
void copy(Student student, double* haozong){
haozong[]={student.height, student.weight, student.size;
}
这样写是不是不正确?
不能在函数里直接给接收过来的指针地址初始化?
若要实现这样功能,有什么好办法?
可否给指针类型的形参数组初始化?
答案:3 悬赏:0 手机版
解决时间 2021-02-12 05:36
- 提问者网友:留有余香
- 2021-02-11 18:01
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-02-11 19:24
不正确.首先,第一个形参说明就是错的.不能用结构名去说明或定义一个结构变量.其次,不能在函数内部对形参初始化.事实上,只能在调用时把实参传给它,这就相当于初始化的.最后,你这个想法是没有意义的.呵呵.不知这样说,你能不能明白.朋友.
全部回答
- 1楼网友:迷人又混蛋
- 2021-02-11 21:49
这样写是不行的,因为copy函数的入参student是一个副本。
传指针就可以了。
void copy(Student* s, double* haozong);
……
Student s;
double d;
copy(&s, &d);
……
- 2楼网友:怀裏藏嬌
- 2021-02-11 20:39
不用担心,你这个问题不存在。
解决办法,让next = null,next想必你要表示的是链表的下一个,对吧,构造这一个的时候,下一个设置为null,是个不错的选择。
即使一定要构造,也不存在这个问题,你的类定义已经是完整的了。递归函数想必你了解,在函数还没有定义完的时候,又调用了自己,可这也没问题呀。
说一下这段代码的几个问题:
第一,这个类应该叫node,节点,而不是list,list类应该持有以node为节点的链表头(以单向链表为例),并且应该定义一些对链表的操作,比如插入删除遍历等。node节点在生成时,不需要考虑其next指针指向哪里,一般置为null,在链表插入操作时,才重置其next指针为对应值。因此,node的拷贝构造函数只需处理节点本身所带有的数据就可以了。
第二,问题在你的问题中,“将对象指针做形参传入函数里面会调用复制构造函数”,这个表述是错误的,传递指针不对引起构造函数调用,仅仅是一个地址值的传递罢了。
,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯