c中关于引用传递的举例还是没看懂怎么理解,形参中的&还能按取地址符号来用吗

图片说明

引用是引用,取地址是取地址。不同上下文,一个符号有不同的用途,不要瞎联系。

&还可以是按位and运算符呢。*还可以是乘法运算符呢。你说指针和乘法差多远去了。

当作取地址的时候,&是一个一元运算符,和! ~ * -等类似。作为按引用传递的时候,&不是运算符,是修饰符。
函数定义中不能出现运算符。
不信你试试
int foo(int -a)
int foo(int !a)
都是不能编译的。

运算符的作用环境应该是不一样的 就像你在你爸面前是儿子 在你儿子面前是爸爸一样

但是 我对这的态度是 既不支持也不否定 埋头学 学会一切就懂了 就像小时候数学+-x/不会

长大了自然都会了一样

#include
/*
第一种
/
void swap(int *a, int *b){
int c = *a;
*a = *b;
*b = c;
}
/

第二种
*/
void swap(int &a,int &b) {
int c = a;
a = b;
b = c;

}
int main(){
int a =3, b=4;
/*
第一种
/
swap(&a, &b);
/

第二种
*/
swap(a, b);
printf("a=%d/n",a);

printf("b=%d/n",b); 
return 0;

}
函数参数传递有值传递、地址传递和引用传递,上面第一种是地址传递,第二种是引用传递,两者调用的结果是一样的

首先说明C语言没有引用这个概念,引用是c++里的,一般初学者写C语言程序都在vc里写的.cpp文件,那是c++的,所以它会有引用。
解释一下引用 ,一个人可以有大名,小名,还有其他的名字,不管是什么名字,都是指的一个人,那么一个变量也可以有多个名字,不管叫什么,指向的都是同一块内存

相信 qq_27138879
Trina_shuang 他(她),的的确确是这个样子。

传递指针和传递引用不矛盾
看这个例子:

 void initptr(int *& p)
{
    p = new int;
}