找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1687|回复: 6

[求助]C++中全局变量的问题

[复制链接]
发表于 2009-11-6 00:57:56 | 显示全部楼层 |阅读模式 IP:江苏扬州
void main()
{
int i,flag;
Tx.x=-11.0;
Tx.y=-53.0;
Tx.z= 1.7;
Data Node;
UpEdge=DownEdge=Tx;

database(BP);

for(Tx.normal=37;Tx.normal<38;Tx.normal++)
{
flag=Wall(Tx,BP,flag,TreeNode);

if(flag!=0)
{
for(i=0;i<flag;i++)
{
Node=TreeNode[i];
Node.normal=Intersect('S',Tx.normal,Node,UpEdge,DownEdge);
// UpEdge,DownEdge在Intersect函数内可以正确赋值;
// 但是在Reflection函数调用之前UpEdge,DownEdge却自动恢复为初始
// 默认值0;我这里UpEdge,DownEdge定义的是全局变量,为什么他们的
// 值没有随函数的调用而改变呢?
Reflection(Node,BP,TreeNode,UpEdge,DownEdge);
}
}
else
cout<<"There are no building in the ray incident direction!"<<endl;
}
}
发表于 2009-11-6 00:57:57 | 显示全部楼层 IP:江苏扬州
你这个地方只是将数值传过去,当然不会改变,除非你用指针或引用
回复

使用道具 举报

发表于 2009-11-6 00:57:58 | 显示全部楼层 IP:江苏扬州
UpEdge,DownEdge定义的是全局变量,全局变量在函数调用过程中值也不相应发生变化吗?
回复

使用道具 举报

发表于 2009-11-6 00:57:59 | 显示全部楼层 IP:江苏扬州
你这个地方只是传参,而不是在函数中去改变值,如果你在调用的函数中写UpEdge=1;DownEdge=2;如果形参名不是这两个的话,这个时候就改变了,改你这个地方只地将参数数值传递过去,如果函数里面没用改变全局变量的语句,而只是对形参的一些操作,是不会改变实参的值的
回复

使用道具 举报

发表于 2009-11-6 00:58:00 | 显示全部楼层 IP:江苏扬州
谢谢斑竹,我已经按照引用的形式把值改变了!
我还有一个问题,如果我在调用函数中形参沿用UpEdge,DownEdge的名字
即形参和实参同名,这个时候如果调用函数中形参值发生变化,相应的实
参值会随之变化吗?
回复

使用道具 举报

发表于 2009-11-6 00:58:01 | 显示全部楼层 IP:江苏扬州
还是一样的,只要不是传的地址,就不会改变,另外如果形参和全局变量名相同,在函数中会使全局变量被屏蔽
回复

使用道具 举报

发表于 2009-11-6 00:58:02 | 显示全部楼层 IP:江苏扬州
谢谢版主,谢谢你的耐心解答!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 15:23 , Processed in 0.108346 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表