c++中的"&"的使用
引用
引用就是某一变量的一个别名,对引用的操作与对变量直接操作完全一样.
&作为引用的时候,必须在定义时候就进行初始化,若不进行初始化则会编译报错。
int N;
int &rN = N;
后面对rN的操作,就是对N的操作.rN-1
,则N减少1
函数中的形参int &i
也是引用
# example 1
int function(int i){
i++
return i;
}
int functionReference(int &i){
i++;
return i;
}
int x = 5;
function(x); //返回值:6, x :5
functionReference(x); //返回值:6, x :6
取地址
& 作为取地址用的时候,要跟指针联系在一起,因为指针就是用来存放地址的
取地址就是想取某变量(形参或者实参)的地址就用&前置表示要取地址了,取的是该变量的内存地址。
int N = 100;
int *p;
p = &N;
两者区别
引用的格式: 类型名 & 别名 = var; 1.定义的时候必须初始化,即& 前面有类名或类型名,&别名后面一定带 “=” (在= 左边); 2.&后面的别名是新的名字,之前不存在。
&取地址时: 如果&是取址运算符,也就意味着取一个变量的地址并付给指针变量。&后面紧跟的是变量(已存在);
&在变量定义区,表示引用,要注意它的用法, &在变量操作区,表示取地址符,如:
int x=10, *p=&x ; //这里&作用在x上, 是取地址符 int &x ; //引用是C++引入的一个新特性,你要学的不是C++,则上述代码你是搞不懂的。 这里的&就表示引用。 一般这种形式会在形参中出现。
LNode * &lst ; 中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。 操作引用变量就相当于操作实参变量
使用引用作为函数参数的效果对比
#include<stdio.h>
void test(int x) {
x = 1024;
printf("在函数中的 x = %d\n",x);
}
int main() {
int x = 666;
printf("未经过函数的 x = %d\n",x);
test(x);
printf("经过函数的 x = %d\n",x);
}
//未经过函数的 x = 666
//在函数中的 x = 1024
//经过函数的 x = 666
#include<stdio.h>
void test(int &x) {
x = 1024;
printf("在函数中的 x = %d\n",x);
}
int main() {
int x = 666;
printf("未经过函数的 x = %d\n",x);
test(x);
printf("经过函数的 x = %d\n",x);
}
//未经过函数的 x = 666
//在函数中的 x = 1024
//经过函数的 x = 1024