初学C++的人,往往对引用型和指针型变量的不同点不容易理解。
首先要明白一点,C的函数参数传递都是值拷贝,所谓的地址传递也是值拷贝,之所以能通过地址传递修改外部参数,是因为C 提供了对地址的解引用操作(*)
C 中的指针是一种基本变量类型,所以支持一些基本的运算支持,比如解引用、自增、自减、比较等等
C++ 中的引用类型,实际上并不是基本的变量类型,只是变量的一种别名形式定义,所以不具备的运算支持
下面的代码会很好的演式其中的区别
代码如下:
#include <stdio.h>
void Increment_quote(char * &s) {
++s;
}
void Increment_ptr(char *s) {
++s;
}
int main() {
char s[] = "Hello world";
char *p = s;
char *q = s;
Increment_quote(p);
Increment_ptr(q);
puts(p);
puts(q);
return 0;
}
运行结果如下:
ello world
Hello world