c++中的按值传递和地址传递的区别?细致点儿的~!
这是个按值传递的样本:#include"iostream.h"voidswap(int,int);voidmain(){inta=3,b=4;cout<<"a="<<a<...
这是个按值传递的样本:
#include "iostream.h"
void swap(int,int);
void main()
{
int a=3,b=4;
cout<<"a="<<a<<",b="
<<b<<endl;
swap(a,b);
cout<<"a="<<a<<",b="
<<b<<endl;
}
void swap(int x,int y)
{
int t=x;
x=y;
y=t;
}
此程序的运行结果为:
a=3,b=4
a=3,b=4
这是个地址传递的样例:
#include "iostream.h"
void swap(int *,int *);
void main()
{
int a=3,b=4;
cout<<"a="<<a<<",b="
<<b<<endl;
swap(&a,&b);
cout<<"a="<<a<<",b="
<<b<<endl;
}
void swap(int *x,int *y)
{
int t=*x;
*x=*y;
*y=t;
}
此程序的运行结果为:
a=3,b=4
a=4,b=3
地址传递的例子一步一步地看都明白。也知道电脑具体是怎么执行的。。但是却怎么不明白按值传递,更不用说每一步都明白,和他们的区别了。~!希望高手细细道来。。 展开
#include "iostream.h"
void swap(int,int);
void main()
{
int a=3,b=4;
cout<<"a="<<a<<",b="
<<b<<endl;
swap(a,b);
cout<<"a="<<a<<",b="
<<b<<endl;
}
void swap(int x,int y)
{
int t=x;
x=y;
y=t;
}
此程序的运行结果为:
a=3,b=4
a=3,b=4
这是个地址传递的样例:
#include "iostream.h"
void swap(int *,int *);
void main()
{
int a=3,b=4;
cout<<"a="<<a<<",b="
<<b<<endl;
swap(&a,&b);
cout<<"a="<<a<<",b="
<<b<<endl;
}
void swap(int *x,int *y)
{
int t=*x;
*x=*y;
*y=t;
}
此程序的运行结果为:
a=3,b=4
a=4,b=3
地址传递的例子一步一步地看都明白。也知道电脑具体是怎么执行的。。但是却怎么不明白按值传递,更不用说每一步都明白,和他们的区别了。~!希望高手细细道来。。 展开
3个回答
展开全部
按值传递其实就是把变量复制了一遍,因为是复制品,所以他不会改变样品的值
比如有一个函数 fun( int x);然后去调用
int a=8;
fun(a);当运行到这里的时候 就创建了一个变量 x
然后 a 的的值就复制给 x 了
因为他们存放的地址不一样,所以函数里面 x 变化了
a 的值是不会变的
不知道你能不能理解
比如有一个函数 fun( int x);然后去调用
int a=8;
fun(a);当运行到这里的时候 就创建了一个变量 x
然后 a 的的值就复制给 x 了
因为他们存放的地址不一样,所以函数里面 x 变化了
a 的值是不会变的
不知道你能不能理解
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按值传递更容易理解嘛.
参数为非指针类型,调用的时候不用地址传递,子程序中更改的是局部,而不是调用时的参数.
若要细细讲的话,按地址传递都还有需要说的.
请理解下"指针"与"指针所指向的对象"的差别.
"指针"又有地址么?等
参数为非指针类型,调用的时候不用地址传递,子程序中更改的是局部,而不是调用时的参数.
若要细细讲的话,按地址传递都还有需要说的.
请理解下"指针"与"指针所指向的对象"的差别.
"指针"又有地址么?等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询