引用是引用,取地址是取地址。不同上下文,一个符号有不同的用途,不要瞎联系。
&还可以是按位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;
}