C-问问关于谭浩强函数章节的问题

C-问问关于谭浩强函数章节的问题

偏爱自由 发布于 2016-12-12 字数 406 浏览 1118 回复 2

#include "stdio.h"
void main()
{
int max(int x,int y);
int a=3,b=5,c;
c=max(a,b);
printf("%p %pn",&x,&y);
printf("%dn",c);
}
int max(int x,int y)
{
printf("%p %pn",&x,&y);
return x>y?x:y;
}
为什么运行的时候 提示没有声明x和y呢??
我只是想知道 前个x和y的地址和后x和y的地址是否一致而已

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-06-25 2 楼

void main()
{ //==>{}就是变量的作用域
int max(int x,int y); //==>只是声明函数max,没有定义x、y,
//==>该行可以写成:int max(int,int);
int a=3,b=5,c;
c=max(a,b);
printf("%p %pn",&x,&y); //==>所以到这里,x、y还没有被定义
printf("%dn",c);
}

想挽留 2017-02-01 1 楼

#include "stdio.h"
void main()
{
int max(int x,int y);
int a=3,b=5,c;//如果采用C++的IDE,例如VC++ 6.0,运行不会出错,但是采用C的IDE,例如Trubo C,这里会编译出错,因为C语言变量声明要在函数的最前面,即max函数前面一行声明
c=max(a,b);
printf("%p %pn",&x,&y);//这里应该改成printf("%p %pn",&a,&b);
printf("%dn",c);
}
int max(int x,int y)
{
printf("%p %pn",&x,&y);
return x>y?x:y;
}
上面给出程序修改,下面进行问题分析:
1)没有声明x和y,是因为你在main函数中没有声明x和y变量,int max(int x,int y)中的x和y是max函数的形参,对于main函数而言,是局部变量,只在max函数里面有用,对main函数没有用,建议你可以查看一下局部变量和全局变量以及参数传递的相关资料;
2)int max(int x,int y),这种函数声明形式,参数传递是值传递,在函数调用max(a,b)时,开辟了两个空间给x和y,将a的值传递给x,将b的值传递给y,所以两次打印的地址是不相同的;如果采用引用传递,int max(int &x,int &y),这种函数声明形式,x和a指向同一个地址,y和b指向同一个地址,则两次打印的地址是相同的。