为什么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
一般数据输入的时候需要这个取地址符,但输入的对象为数组名是,不需要写,因为数组名代表数组首地址。

为什么C语言中有时需要&符号,有时又不需要这个符号?
首先要明确&的作用。如果是函数中的参数的话,这涉及到按值传递和按地址传递。举个例子,我们编写一个交换a与b位置的过程函数swap;我们可以这么声明:void swap(int a,int b);我们还可以这么声明void swap(int &a,int &b);这连个函数有什么区别呢。首先看第一个声明;(1)void swap(int a,i...

在C语言中,结构体成员的引用为什么有时候可以不用“&"?
你在前面定义结构体时应该把name定义为一个字符型数组,如char name[10];因为姓名是用字符串表示的。应填为:stu[i].name,&stu[i].num,&stu[i].age.第一个不能用&,因为数组名name就代表了该数组的首地址,而&就是一个取地址符号,所以不需再用&,而后面的num,age都只是整型变量,所以要...

c语言 scanf函数()里 什么时候可用& 什么时候不用??
这里所说的其实就是一个地址 所以当变量是一个指针或者表示一个地址时就不中& &就是求地址的运算符 如数组名是数组第一个元素的地址 所以数组名就可以不用加&进行运算 比如 int a;int *p=&a;scanf("%d",p);则不需要使用&运算符

C语言什么时候用&这个符号
该用的地方用啊,这个符号有好几个含义。1. 取地址,取得某个变量的地址, 这与* 相反。2 按位与运算 按二进制来表示,两位都为1,结果才为1 比如 0011 & 0101 =0001 3 && 代表逻辑与,也就是条件表达式里面并且的意思。比如 x大于5 并且是2的倍数,可以这样表示 x>5 && x%2...

c语言程序设计中什么时候用& 什么时候用&&?
当你要表示 小数的时候就需要用 float了啊。。int 和 long 都是表示整型的 float 和 double 都是表示浮点型的 也就是 小数 float的表示的范围要比double小

C语言,为什么数组那里要用&,数组不是不用吗?
数组本身是不用的,因为数组本身就是属于引用类型的,用数组名字代表的是整个数组,而不能代表单个的元素,这几年明显是输入其中一个值得,所以就正常的输入一个特定类型的值,需要用取地址符号。

C语言中什么时候需要用到符号&
& 是取地址符号!当从键盘输入一个数据到内存单元时,先找到内存单元的地址,再将数据放到内存单元中 例如:int a;\/\/定义一个整型变量a,给它分配一个内存空间 scanf("%d",&a); \/\/从键盘输入数据,找到a的地址放进去。&(取地址符号)在指针中用到比较多 例如:int *p=&a;\/\/定义一个指针...

c语言中&的作用是什么?
1、取地址符& 一般用C语言定义一个变量,这个变量都会对应一块存储空间,这个存储空间有一个地址。如果你想过得这个地址,就要使用&符号。&后面跟变量名,就可显示该变量在内存中的地址。2、位运算符& 在这里&表示按位与,表示参加运算的两个数据,按二进制位进行“与”运算。两位同时为“1”,结果...

c语言中 如scanf("%d",&a)为什么要加& 而printf(“%d",a+b)里却没有...
这个符号"&",是取地址运算符,由于scanf是输入函数,所以在输入时,一定要告诉计算机这个东西往哪存储,所以就要把程序员想存储的地址先取出来,然后在往这个地址里输入内容。而printf是标准输出函数,就是在显示器上把要显示的东西给显示出来,所以都是在显示器上显示,不用什么取地址符号。%f表示浮点型...

...有个问题如下图所示,为什么一个printf不用&符号,一个又要?_百度知...
&ch1表示对char类型取地址,最终类型为char*(c类型字符串),printf用%s来输出char*语法上没有问题 但是这个代码有个严重bug,用%s输入的char*必须用\\0结尾,这个程序估计要crash 正确写法应是printf("%c\\n",ch1);

相似回答