引用是C++引入的新的名词,他实际上表示的是对象的另一个名字。通过&d的形式来定义引用1
2
3int ival = 1024;
int &ref = ival; //correct
int &ref2; // wrongs, reference must be initialized
引入引用的目的还是为了解决函数的形参与实参的问题。如下所示,在C++中是值传递,
所以对形参的修改是无法影响到实参的。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32int add(int a, int b) {
a++;
b++;
return a + b;
}
int add1(int* a, int* b) {
(*a)++;
(*b)++;
return *a + *b;
}
int add2(int &a, int &b) {
a++;
b++;
return a + b;
}
int main() {
int a = 1;
int b = 2;
int c = add(a, b);
std::cout << a << " " << b << " " << c << std::endl;
c = add1(&a, &b);
std::cout << a << " " << b << " " << c << std::endl;
a = 1;
b = 2;
c = add2(a, b);
std::cout << a << " " << b << " " << c << std::endl;
return 1;
}
1 | 1 2 5 |
如果我们想要修改实参,在C语言中,我们是使用的指针来解决的这一问题,在C++中我们使用引用来解决。那么指针和引用有什么区别呢?换句话说为啥有指针来解决问题,还要引入引用的?个人理解,引用更加的安全,而指针操作不慎就有可能踩内存或者越界等等,实际上C语言的指针是相当危险的一件利器。