关注“杜明c”,每天进步一点点!
已经时隔一个多月没有发文章了,主要是太忙了,绝不是偷懒

今天给大家聊一聊指针和引用的不同之处在哪里。
指针的使用
引用的使用
二者的区别
后话
在C语言中,我们怎么样在子函数中交换两个数,很简单的一个函数,大家第一时间总是想到它。
void exchange(int* a, int* b){    int c;    c = *a;    *a = *b;    *b = c;}我们在主函数中调用它,就可以完成数据交换。
int main(){    int a=1, b=2;    exchange(&a, &b);    printf("a=%d,b=%d", a, b);    return 0;}----out----a=2,b=1引用的使用在中C++,对于指针的使用还有另一种替换方法,我们把这种方法称为“引用”
注意,只有C++才能使用引用!
void exchange(int& a, int& b){    int c;    c = a;    a = b;    b = c;}在主函数中调用它
int main(){    int a=1, b=2;    exchange(a, b);    printf("a=%d,b=%d", a, b);    return 0;}----out----a=2,b=1再看一下引用的用法
int main(){    int a = 7;    int& b =a;    b = 2;    printf("a=%d,b=%d",a,b);    return 0;}----out----a=2,b=2二者的区别那么引用和指针有什么区别呢
指针本质上是数据的”地址“,引用本质上还是数据地址,但是因为用法不同,我们把它称作数据的“别名”
指针能重复赋值,指向不同的对象,引用不能重复赋值。
指针可以使用多级,引用只能是一级。
总结一下,其实我们可以把引用当成一个常量的指针。
| 指针 | 引用 | 
|---|---|
| 地址 | 别名 | 
| 可重复赋值 | 不可重复赋值 | 
| 多级指针 | 一级引用 | 
int&  a;    //合法,变量的别名int*& a;    //合法,指针的别名int&& a;    //非法,多级引用int&* a;    //非法,指向别名的指针后话你知道为什么main需要int作为返回值吗,void行不行?
int main(){    return 0;}严格来说,main都应该使用int作为返回值,因为即使在当前环境下使用void没有报错,在另外环境或者编译器中可能不能正常运行。
End
杜明c
专注C/C++
长按关注