黑马程序员技术交流社区
标题: 这两段代码有什么区别? [打印本页]
作者: Mokill0911 时间: 2014-8-17 00:53
标题: 这两段代码有什么区别?
本帖最后由 Mokill0911 于 2014-8-17 15:15 编辑
Code 1:
- void swap(int &a,int &b)
- {
- int temp;
- temp=a;
- a=b;
- b=temp;
- }
复制代码
Code2:
- void swap(int a,int b)
- {
- int temp;
- temp=a;
- a=b;
- b=temp;
- }
复制代码
好吧,其实我问的是参数列表里两种变量的写法有什么区别 = =|||
作者: 迷失的独白 时间: 2014-8-17 02:15
本帖最后由 迷失的独白 于 2014-8-17 10:10 编辑
这是C里的,请恕我匮乏的知识和表达力
int a 指的是a的内容(即存在在a中的值,或者叫变量)
int &a 指的是一个内存地址值,
#include<stdio.h>
int var = 1;
int *ptr;
int main(void)
{
ptr = &var;(把var的内存地址赋给了ptr)
printf(略)
return 0;
}
那个数组举个例子,就好像
int a[] = {0,1,2,3,4};
int b[] = null;(当作指针)
b=a;(把a的地址值赋给了b)
System.out.println(a);
System.out.println(b);
System.out.println(a.equals(b));(true,指向了同一个地址值)
附送的
&a取的是a的地址。
(int)&a是将a的地址转换成int。
(int&)a 不经过转换, 直接得到a在内存单元的值,并将其按照int存储方式取出,转换成整数输出。
(int)a a在内存中的值转换成int类型
作者: Baiye 时间: 2014-8-17 02:48
上面的写法可以对实参进行操作,交换两传入的实参。下面的只能实现两个形参的交换。
作者: 冒牌高手 时间: 2014-8-17 07:13
实参和形参的区别呗
作者: huangxuanheng 时间: 2014-8-17 07:41
C的,第一种是把内存地址进行交换,第二种你平时怎么理解就怎么理解了
作者: 沿途小将 时间: 2014-8-17 09:31
这个靠谱
作者: Mokill0911 时间: 2014-8-17 15:09
…… 看的有点半懂不懂…… 于是拿着“形式参数or 实际参数”Google一下先……
作者: Mokill0911 时间: 2014-8-17 15:11
记得以前有个哥们儿问过,怎么做一个函数,让其接收两个整数值然后交换位置。
他发现sawp(int a,int b) 这种写法只能使数值在函数调用时被交换,但调用该函数之后,打印a 和b 的值还是发现没有变化。
所以这里要实现他的目的应该用第一种写法,对么?
作者: jeromechen 时间: 2014-8-17 15:54
讲的很细,不错
作者: Baiye 时间: 2014-8-17 16:03
对的,要使用第一种
作者: THE_FUTURE 时间: 2014-8-17 17:30
这是函数的重载 第一个是将 &a &b的地址值赋给数组变量。 第二个是将a b 的的地址值赋给数组变量。俩者属于同函数 不同形参!
作者: Mokill0911 时间: 2014-8-19 00:58
谢谢解答!
作者: Mokill0911 时间: 2014-8-19 00:59
可能是因为我基本功还不够牢靠,所以理解的不是很透彻,但还是谢谢解答哈:)
会继续努力的!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |