为什么C语言中有时需要&符号,有时又不需要这个符号?

如题所述

首先要明确&的作用。
如果是函数中的参数的话,这涉及到按值传递和按地址传递。
举个例子,我们编写一个交换a与b位置的过程函数swap;
我们可以这么声明:void swap(int a,int b);
我们还可以这么声明void swap(int &a,int &b);
这连个函数有什么区别呢。首先看第一个声明;
(1)void swap(int a,int b);
这个声明是按值传递,在调用这个函数的时候,先把a和b的值复制到2个变量中ta和tb,然后再执行过程。过程结束后ta,和tb的值互相交换,然后,函数执行完成后,ta和tb的空间就会被释放。最后a和b的值不会改变;
(2)void swap(int &a,int &b)
这个声明是按地址传递,在调用这个函数的时候,直接读取a和b的地址,函数执行完成后,这2个地址中的数据发生交换,函数结束后这种变化不会消失。最后a和b的值相互转换。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-08
这个是取地址符,比如对于变量a,&a就是取它的地址,当一个元素可以表示地址时,就不需要地址啦:如一个数组a[19],a就可以表示为该数组的地址,所以就不需要再去取地址了
第2个回答  2012-03-08
这个符号,有三个地方用到
1、取地址,如scanf中
有的子函数需要用指针,但是在主函数中可以不定义指针,用变量的地址就可以
2、位运算,a&b
3、逻辑运算,但是要用两个 &&
第3个回答  2012-03-08
一,在输入数据时要用它
二,函参传递中  有值传和地址传递 进行地址传递时 要用到它 它在c中取地址用 c++中会大有用途本回答被提问者采纳
第4个回答  2012-03-08
一般数据输入的时候需要这个取地址符,但输入的对象为数组名是,不需要写,因为数组名代表数组首地址。
相似回答