1,值传递引用传递的区别值传递传递的是副本,引用传递是引用连接 。
2,C中值传递和引用传递的区别你要是学过汇编,知道“地址”这个概念 , 可能会更容易理解之间的区别 。int b = 123;fun1(b);fun1 (int a) a = 5; //调用fun1时,把变量的值复制给了a,所以a,b是两个完全不同的变量//修改b , 不影响a}int b = 123;fun2(&b);fun2 (int *a) *a = 456; //调用fun2时,传递的是变量b的地址 , 即a和b指向同一个存储区域 //所以,任何一个变量发生变化,都会影响到另外一个 。//*a=456;此时,b的值也变成了456;}举个例子:void swap(int a, int b)//值传递方式参数会创建副本,不能达到改变参数的目的,同时如果参数是大数据结构,创建副本会影响效率int t = a;a = b;b = t;}void swap(int &a, int &b)//引用参数,不会产生副本,直接修改了实参,效率高int t = a;a = b;b = t;}void swap(int *a, int *b)//同样也创建副本,但是也能改变实参,同时如果参数是大数据结构,效率较值传递高int t = *a;*a = *b;*b = t;}
3 , c中引用传递与值传递的区别引用专递就是传递对象本身,值传递是传递对象的复制品打个比方:比如你有一张相片要修改,把相片编辑工具看作函数,把被处理的相片看作参数 , 那么直接操作相片原件就相当于引用传递,把相片复制一份然后操作这个复制品就叫值传递 。很明显引用传递会影响当作参数的对象,而值传递不会影响当作参数的对象C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递 。以下是"值传递"的示例程序 。由于Func1函数体内的x是外部变量n的一份拷贝,改变x的值不会影响n, 所以n的值仍然是0 。void Func1(int x) x = x + 10; } ... int n = 0; Func1(n); cout << "n = " << n << endl; // n = 0 以下是"指针传递"的示例程序 。由于Func2函数体内的x是指向外部变量n的指针,改变该指针的内容将导致n的值改变,所以n的值成为10 。void Func2(int *x) (* x) = (* x) + 10; } ... int n = 0; Func2(&n); cout << "n = " << n << endl; // n = 10 以下是"引用传递"的示例程序 。由于Func3函数体内的x是外部变量n的引用,x和n是同一个东西,改变x等于改变n,所以n的值成为10 。void Func3(int &x) x = x + 10; } ... int n = 0; Func3(n); cout << "n = " << n << endl; // n = 10 对比上述三个示例程序,会发现"引用传递"的性质象"指针传递",而书写方式象"值传递" 。实际上"引用"可以做的任何事情"指针"也都能够做,为什么还要"引用"这东西? 答案是"用适当的工具做恰如其分的工作" 。指针能够毫无约束地操作内存中的任何东西,尽管指针功能强大,但是非常危险 。如果的确只需要借用一下某个对象的"别名" , 那么就用"引用",而不要用"指针",以免发生意外 。两个运行时要带的参数都不一样啊 。第一个必须带指针类型 。不能如下这样调用 。int i = 9; f(&i); 而第二种就可以f(&i); 两个函数参数表的意义是不一样的 。第一个是指一个整型指针的引用,第二个是一个整数指针 。第一个函数你可以在函数体内修改指针的地址的,这样外面的地址也会发生变化 。而第二个你只能修改所指对象的内容才是对外面可见的 。举例如下: #include #include using namespace std; void f1(int * &i); void f2(int *i); void main() { int *j = new int(9); int j = 9; f1(j); f2(&j); cout << *j << " " << j; system("pause"); } void f1(int * &i) { i = new int(5);; } void f2(int *i) { i = new int(5); } 程序的输出是: 5 9 现在明白了吧?【c引用传递和值传递的区别,值传递引用传递的区别】
推荐阅读
- 163邮箱大师
- c语言可以用手机编写吗,手机端C语言编辑器可运行
- 6130
- 电脑死机dump文件分析,java dump文件分析工具
- 苹果手机怎么破密码,苹果手机忘密码了怎么解
- 苹果手机怎样设置主屏幕壁纸桌面,苹果怎么换壁纸
- 微信分身苹果版免费版,苹果7plus手机如何安装微信分身
- t107
- android创建数据库,android 怎么创建数据库