关注“杜明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++
长按关注