A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mokill0911 中级黑马   /  2014-8-17 00:53  /  2013 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Mokill0911 于 2014-8-17 15:15 编辑

Code 1:

  1. void swap(int &a,int &b)
  2. {
  3.     int temp;
  4.     temp=a;
  5.     a=b;
  6.     b=temp;
  7. }
复制代码




Code2:
  1. void swap(int a,int b)
  2. {
  3.     int temp;
  4.     temp=a;
  5.     a=b;
  6.     b=temp;
  7. }
复制代码




好吧,其实我问的是参数列表里两种变量的写法有什么区别 = =|||

12 个回复

倒序浏览
本帖最后由 迷失的独白 于 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类型






回复 使用道具 举报 1 0
上面的写法可以对实参进行操作,交换两传入的实参。下面的只能实现两个形参的交换。
回复 使用道具 举报
实参和形参的区别呗
回复 使用道具 举报
huangxuanheng 来自手机 中级黑马 2014-8-17 07:41:36
报纸
C的,第一种是把内存地址进行交换,第二种你平时怎么理解就怎么理解了
回复 使用道具 举报
迷失的独白 发表于 2014-8-17 02:15
看着像C里的,请恕我匮乏的知识int a 指的是a的内容(即存在在a中的值,或者叫变量)
int &a  指的是一个内 ...

这个靠谱
回复 使用道具 举报
迷失的独白 发表于 2014-8-17 02:15
这是C里的,请恕我匮乏的知识和表达力
int a 指的是a的内容(即存在在a中的值,或者叫变量)
int &a  指的 ...

…… 看的有点半懂不懂…… 于是拿着“形式参数or 实际参数”Google一下先……
回复 使用道具 举报
Baiye 发表于 2014-8-17 02:48
上面的写法可以对实参进行操作,交换两传入的实参。下面的只能实现两个形参的交换。 ...

记得以前有个哥们儿问过,怎么做一个函数,让其接收两个整数值然后交换位置。

他发现sawp(int a,int b) 这种写法只能使数值在函数调用时被交换,但调用该函数之后,打印a  和b   的值还是发现没有变化。

所以这里要实现他的目的应该用第一种写法,对么?
回复 使用道具 举报
迷失的独白 发表于 2014-8-17 02:15
这是C里的,请恕我匮乏的知识和表达力
int a 指的是a的内容(即存在在a中的值,或者叫变量)
int &a  指的 ...

讲的很细,不错
回复 使用道具 举报
Baiye 中级黑马 2014-8-17 16:03:33
10#
Mokill0911 发表于 2014-8-17 15:11
记得以前有个哥们儿问过,怎么做一个函数,让其接收两个整数值然后交换位置。

他发现sawp(int a,int b ...

对的,要使用第一种
回复 使用道具 举报
这是函数的重载  第一个是将 &a   &b的地址值赋给数组变量。 第二个是将a  b 的的地址值赋给数组变量。俩者属于同函数 不同形参!
回复 使用道具 举报
Baiye 发表于 2014-8-17 16:03
对的,要使用第一种

谢谢解答!
回复 使用道具 举报
THE_FUTURE 发表于 2014-8-17 17:30
这是函数的重载  第一个是将 &a   &b的地址值赋给数组变量。 第二个是将a  b 的的地址值赋给数组变量。俩者 ...

可能是因为我基本功还不够牢靠,所以理解的不是很透彻,但还是谢谢解答哈:)

会继续努力的!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马