c++ 指针和引用的区别(面试) 向右看齐 2023-02-17 14:50 1阅读 0赞 ### 指针和引用的区别: ### 这里对于c++中的指针和引用的区别做一个简单的总结! **1. 非空区别** 在任何情况下都不能使用指向空值的引用,一个引用必须总是指向某些对象。因此如果你使用某一个变量让它指向对象,但是该变量在有些时候可能不指向任何对象,这个时候你应该把它声明为指针,这样你就可以赋空值给该变量。相反的,如果某个变量指向一个对象且你不允许这个对象为空值,这个时候你就将它声明为引用(也许有点绕…)。不存在指向空值的引用也说明使用引用的代码效率比指针高。 上代码–>在 note1 时: #include<iostream> int main() { int a = 1; int &ref = a ; //note1 int *p; //指针可以为空 //int &ref; //note2 std::cout<< ref << std::endl; } **输出:** ![在这里插入图片描述][20200614174511849.png] **note2时候的输出:** ![在这里插入图片描述][20200614174633666.png] **代码2:** #include<iostream> int main() { int a = 1; int b; int &ref = a ; int *p = &b; b = 5; std::cout<< ref << std::endl; std::cout<< *p << std::endl; std::cout<< p << std::endl; } **输出:** ![在这里插入图片描述][20200614175814287.png] **2. 判断合法性** 在使用引用之前不需要测试它的合法性,相反,指针总是应该被测试,防止其为空,因为声明的指针是可以不指向任何对象的,所以要进行**判空操作**。 **3. 是否可修改** 指针可以被重新赋值指向另一个对象,而作为引用,总是指向初始化时被指定的对象,以后不能改变,但是其指定对象的内容可以改变。 **4. 应用区别** 总的来说,以下情况应该使用指针:1、考虑到存在不指向任何对象的可能;2、需要在不同的时刻设置不同的对象。如果只是指向一个对象且指向一个对象之后不再改变,那么推荐使用引用。 **Example:** #include<iostream> int main() { int v1; int v2 = 1024; int v3 = 999; int &ref1; //错误,没有对于引用初始化 int &ref2 = v1; //正确,声明引用同时初始化,ref2是v1的别名 int &ref3 = v1; //正确,同上 int *p; *p = 5; //错误,指针p没有指向实际的地址,这种情况下赋值赋的值不知道放到那里去,所以是错误的 p = &v3; //正确,p指向v3实际的地址 const double x1; //错误,const常量必须初始化 const double x2 = 10.0; const double x3 = 0.5; const double *p1 = &x2; std::cout << p; return 0; } 欢迎指正! [20200614174511849.png]: https://img-blog.csdnimg.cn/20200614174511849.png [20200614174633666.png]: https://img-blog.csdnimg.cn/20200614174633666.png [20200614175814287.png]: https://img-blog.csdnimg.cn/20200614175814287.png
还没有评论,来说两句吧...