传递实参

opposever 2008-04-28 08:33:37
C++ Primer第七章 习题7.5
#include <iostream>
using namespace std;

int big(int x,const int* y)
{
return x>=*y?x:*y;
}

int main()
{
int x,*y;
cout<<"please enter x:"<<endl;
cin>>x;
cout<<"please enter *y:"<<endl;
cin>>*y;

cout<<"the bigger of x and *y is:"<<big(x,*y)<<endl;
return 0;
}

编译时提示不能传递 const int参数,看它题目的意思形参应该是const int*y,那该怎么定义实参才能传给形参?
...全文
160 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsmdiao0812 2008-04-29
  • 打赏
  • 举报
回复
顶下5楼
shootingstar_w 2008-04-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhangjundriver 的回复:]
错误的程序是!

因为你定义了一个指针int *y
但你要初始化该指针,因为y 指向一个特定的内存单元!
但在你的程序中还没有给他指定任何的内存单元
C/C++ code
#include <iostream>
using namespace std;

int big(int x,const int* y)
{
return x>=*y?x:*y;
}

int main()
{
int x,*y;
// 为y分配内存空间,你的y是一个野指针,当然在运行时要崩溃了!
y = new int;
cout < <"please enter x:" < <end…
[/Quote]
yuyunliuhen 2008-04-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhangjundriver 的回复:]
错误的程序是!

因为你定义了一个指针int *y
但你要初始化该指针,因为y 指向一个特定的内存单元!
但在你的程序中还没有给他指定任何的内存单元C/C++ code#include<iostream>usingnamespacestd;intbig(intx,constint*y)
{returnx>=*y?x:*y;
}intmain()
{intx,*y;//为y分配内存空间,你的y是一个野指针,当然在运行时要崩溃了!y=newint;
cout<<"please enter x:"<<endl;
cin>>x;
cout<<"please enter *y:"<<endl;
cin>>*y;…
[/Quote]
Xuon 2008-04-29
  • 打赏
  • 举报
回复
顶5楼!
ribut9225 2008-04-29
  • 打赏
  • 举报
回复
高人呐

学习了
overbai 2008-04-28
  • 打赏
  • 举报
回复
还是5楼的比较强啊!
全对!
zhangjundriver 2008-04-28
  • 打赏
  • 举报
回复
错误的程序是!

因为你定义了一个指针int *y
但你要初始化该指针,因为y 指向一个特定的内存单元!
但在你的程序中还没有给他指定任何的内存单元

#include <iostream>
using namespace std;

int big(int x,const int* y)
{
return x>=*y?x:*y;
}

int main()
{
int x,*y;
// 为y分配内存空间,你的y是一个野指针,当然在运行时要崩溃了!
y = new int;
cout < <"please enter x:" < <endl;
cin>>x;
cout < <"please enter *y:" < <endl;
cin>>*y;

// 条用函数的时候不要加* ,否则要错误,
//因为y才是一个指针,而第二个参数就是要一个指针;
cout < <"the bigger of x and *y is:" < <big(x,y) < <endl;
return 0;
}
不想低调 2008-04-28
  • 打赏
  • 举报
回复
#include  <iostream>
using namespace std;

int big(int x, const int * y)
{
return x>=*y?x:*y;
}

int main()
{
int x,*y;
cout <<"please enter x:" <<endl;
cin>>x;
cout <<"please enter *y:" <<endl;
cin>>*y;

cout <<"the bigger of x and *y is:" <<big(x,y) <<endl;
fflush(stdin);
getchar();
return 0;
}
tjj5203 2008-04-28
  • 打赏
  • 举报
回复
big(x,*y)//他要的是指针,你传给它的是值啊!!big(x,y);
tomtung 2008-04-28
  • 打赏
  • 举报
回复
big(x,y)这样调用就可以了

如果你还想按照big(x,*y)调用,那函数应该是int big(const int,const int)
因为*y已经是一个int了,而y才是一个int*
wuyu637 2008-04-28
  • 打赏
  • 举报
回复
int big(int x,const int* y)
{
return x>=*y?x:*y;
}

int main()
{
int x,y;
cout <<"please enter x:" <<endl;
cin>>x;
cout <<"please enter y:" <<endl;
cin>>y;

cout <<"the bigger of x and *y is:" <<big(x,&y) <<endl;
return 0;
}

说实话,不知道你要干什么。。
比较大小,不需要这样。

64,646

社区成员

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

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