C++中&的使用

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

updatedupdated2022-01-242022-01-24