帮忙啦~~~给我上一课~~~

tjhgltt 2003-03-18 06:29:48
1>
int *fun(int &a,int &b)
{
if(a>b)return &a;return &b;
}
2>
int *fun(int &a,int &b)
{
if(a>b)return *a;return *b;
}
3>
int *fun(int *a,int *b)
{
if(a>b)return *a;return *b;
}
4>
int *fun(int *a,int *b)
{
if(a>b)return &a;return &b;
}
1.2.3.4.这几个哪个有错?
错在哪里?为什么错?
哪个是对的?怎么会对?
(原来问过,可能是问的不清楚,反正是还没弄明白,请帮忙讲讲啦~~~~)
...全文
14 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjhgltt 2003-03-18
  • 打赏
  • 举报
回复
thanks~~~
FiLng 2003-03-18
  • 打赏
  • 举报
回复
设:
int x=1,y=2;
int * z;
函数调用如下:
z=fun(x,y);

1〉对,return &a表示返回a的地址就是返回x的地址。

2〉错,int &a表示参数a是int的引用,这里就是int型变量x的别名,这时函数内部a表示x,而return *a表示返回以a值(1)为地址的内存的值,而返回值要求是int *

设:
int x=1,y=2;
int * z;
函数调用如下:
z=fun(&x,&y);
3〉错,int *a 表示参数a是指向int的指针,这里a获得变量x的地址,if(a>b)是比较变量x和y的地址,return *a表示返回a这个地址中的值(int型),而返回值要求是int *

4> 错,return &a表示返回a的地址,而a的值是x的地址,所以返回值应是int **
tjhgltt 2003-03-18
  • 打赏
  • 举报
回复
555555555555555~~~why?可以讲得再清楚点吗?我才学了没几天哦~
  • 打赏
  • 举报
回复
chinajiji说的对,我错了,第一个是对的:)
参数是引用,返回的是地址
rtdb 2003-03-18
  • 打赏
  • 举报
回复
1对。
因为你要的返回值是一个int指针。

2应该编译不过,
3返回的是int,
4返回的是int指针的地址。
  • 打赏
  • 举报
回复
1>
int& fun(int &a,int &b)//参数是引用
{
if(a>b)
return a; //返回值也应该是引用
return b;
}
3>
int *fun(int *a,int *b)
{
if(*a>*b) //比较的是数值不是地址
return a;
return b;
}
chinajiji 2003-03-18
  • 打赏
  • 举报
回复
除了第一个以外,其余的都错.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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