参数传递问题

freeflying666 2008-12-27 11:31:33
class STU{
public:
.....
double x;
double y;
......
};

main()
{
.....
STU stu[10];
for(i=0;i<7;i++)
{
t=f(&stu[j]); //1、这里参数中,不写j可以吗?是不是默认的第j个元素?
.....
}
}
double f(STU* stu) //2、是把实参stu[j](即把实参数组stu中第j个元素)的所有成员都传到形参stu中了吗?
{ //3、 这里表示单个元素的形参名与实参名相同,合理吗?
....
stu->x=b; //4、 这时形参的改变也会使实参对应的第j个元素的成员该变吧?
stu->y=c;
...
}
请各位高手多多指点,谢谢了!
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeflying666 2008-12-28
  • 打赏
  • 举报
回复
for(j=0;j <7;j++) 刚才写错了,是j不是i。
{
t=f(&stu[j],j); //1、这里参数中,不写j可以吗?是不是默认的第j个元素?
..... 信息不够,难以判断,关键j怎么定义的

}
}
double f(STU* stu,int j) //2、是把实参stu[j](即把实参数组stu中第j个元素)的所有成员都传到形参stu中了吗?
形参是一个指向STU的指针,传参只是把指针的副本传进去,不是把指针所指的东西传进去,…


那也就是说必须如上面所该了,
看你的逻辑了,从这个for循环的逻辑看就是遍历stu数组把数组里的STU对象的地址传给f函数处理,不写j怎么遍历啊?
其实我指的是既然 t=f(&stu[j]),这时for循环,所以j已经是具体的数值了&stu[j]中已经包括了j,所以我觉得不需要再写参数了。

我这种想法是不有错,请高手指点!谢谢了!!!
xiaoyisnail 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 freeflying666 的回复:]
for(j=0;j <7;j++) 刚才写错了,是j不是i。
{
t=f(&stu[j]); //1、这里参数中,不写j可以吗?是不是默认的第j个元素?
..... 信息不够,难以判断,关键j怎么定义的

}
}
double f(STU* stu) //2、是把实参stu[j](即把实参数组stu中第j个元素)的所有成员都传到形参stu中了吗?
形参是一个指向STU的指针,传参只是把指针的副本传进去,不是把指针所指的东西传进去,…
[/Quote]

看你的逻辑了,从这个for循环的逻辑看就是遍历stu数组把数组里的STU对象的地址传给f函数处理,不写j怎么遍历啊?
freeflying666 2008-12-28
  • 打赏
  • 举报
回复
for(j=0;j <7;j++) 刚才写错了,是j不是i。
{
t=f(&stu[j]); //1、这里参数中,不写j可以吗?是不是默认的第j个元素?
..... 信息不够,难以判断,关键j怎么定义的

}
}
double f(STU* stu) //2、是把实参stu[j](即把实参数组stu中第j个元素)的所有成员都传到形参stu中了吗?
形参是一个指向STU的指针,传参只是把指针的副本传进去,不是把指针所指的东西传进去,不过函数里可以通过stu指针去修改指向的对象 这里我不明白:“传参只是把指针的副本传进去,不是把指针所指的东西传进去”能具体一点吗?副本是什么?(是成员的值吗?)指针所指的东西是什么?(是地址吗?)
{
//3、 这里表示单个元素的形参名与实参名相同,合理吗?
.... 形参是函数作用域的一部分,所以可以这样声明
stu->x=b; //4、 这时形参的改变也会使实参对应的第j个元素的成员该变吧? 会的,就像上面说的可以改变stu指向的对象
stu->y=c;
...
谢谢各位高手的指点,不过我还有疑惑,请高手指点一下。多谢了!
xiaoyisnail 2008-12-27
  • 打赏
  • 举报
回复
for(i=0;i <7;i++)
{
t=f(&stu[j]); //1、这里参数中,不写j可以吗?是不是默认的第j个元素?
..... 信息不够,难以判断,关键j怎么定义的
}
}
double f(STU* stu) //2、是把实参stu[j](即把实参数组stu中第j个元素)的所有成员都传到形参stu中了吗?
形参是一个指向STU的指针,传参只是把指针的副本传进去,不是把指针所指的东西传进去,不过函数里可以通过stu指针去修改指向的对象
{ //3、 这里表示单个元素的形参名与实参名相同,合理吗?
.... 形参是函数作用域的一部分,所以可以这样声明
stu->x=b; //4、 这时形参的改变也会使实参对应的第j个元素的成员该变吧? 会的,就像上面说的可以改变stu指向的对象
stu->y=c;
...
oyljerry 2008-12-27
  • 打赏
  • 举报
回复
1.j表示第j个stu的元素。需要指定stu的索引值
2.传递第j个元素地址,可以通过地址访问它的成员
3.可以相同,自己分清就可以
4.通过指针,可以修改元素内容

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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