首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个传递有关问题

2013-01-01 
一个传递问题下面这个程序是个简单的传递#include stdafx.h#include iostreamusing namespace

一个传递问题
下面这个程序是个简单的传递
========
#include "stdafx.h"
#include "iostream"
using namespace std; 
int x=5;
    int y=6;


void add(int x,int y){
x+=5;
y+=6;
cout<< "mid :x="<<x<<",y="<<y<<endl;
}

void main(){

cout<< "before :x="<<x<<",y="<<y<<endl;
add(x,y);
cout<< "after:x="<<x<<",y="<<y<<endl;
}
==
因为传值的缘故,所以add(x,y)没有影响最终的结果。

before :x=5,y=6
mid :x=10,y=12
after:x=5,y=6

但是如果我把void add(int x,int y)这句改为void add(int i,int j),不改变其他地方,结果变成了

before :x=5,y=6
mid :x=10,y=12
after:x=10,y=12

为什么这样改过之后就会改变最终的结果呢?
[解决办法]
void add(int x,int y);你输出的mid,只是函数体内的x,y,并非全局变量的xy。
void add(int i,int j), 函数内操纵的是 全局变量的xy 。  
变量名字最好不要一样.. 会发生奇怪错误
[解决办法]
想改变实参的值 ,传入引用


void add(int &x,int &y){
x+=5;
y+=6;
cout<< "mid :x="<<x<<",y="<<y<<endl;
}

[解决办法]
未改之前操作的是形参,改变之后操作的是全局变量

热点排行