学习笔记:探究C++中的指针、引用
2020-01-13 23:38
148 查看
引用(可以用作别名):
int a=1; int& b=a; /*注意 1:b改变a也变 b=2; cout<<b<<a<<endl; 输出22 2:必须初始化 不能int& b; 3:不能直接引用常量 int& b=2; 而应该const int& b=2;
先来段简单的代码:
change1:普通的调用
change2:指针
change3:引用
#include <iostream> using namespace std; void change1(int,int); void change2(int*,int*);//指针 void change3(int&,int&);//引用 int main() { int a=1,b=2; cout<<"初始值1:"<<"a="<<a<<",b="<<b<<endl; change1(a,b); cout<<"主1:"<<"a="<<a<<",b="<<b<<endl; int c=3,d=4; cout<<"初始值2:"<<"c="<<c<<",d="<<d<<endl; change2(&c,&d); cout<<"主2:"<<"c="<<c<<",d="<<d<<endl; int e=5,f=6; cout<<"初始值3:"<<"e="<<e<<",f="<<f<<endl; change3(e,f); cout<<"主3:"<<"e="<<e<<",f="<<f<<endl; } void change1(int a,int b) { int c; c=a; a=b; b=c; cout<<"change1:"<<"a="<<a<<",b="<<b<<endl; } void change2(int* a,int* b) { int c; c=* a; * a=* b; * b=c; cout<<"change2*:"<<"*a="<<*a<<",*b="<<*b<<endl; cout<<"change2:"<<"a="<<a<<",b="<<b<<endl; } void change3(int& a,int& b) { int c; c=a; a=b; b=c; cout<<"change3:"<<"a="<<a<<",b="<<b<<endl; }
输出结果:
初始值1:a=1,b=2 change1:a=2,b=1 主1:a=1,b=2 //副本里改变,但是不影响主程序里 初始值2:c=3,d=4 change2*:*a=4,*b=3 change2:a=0x6afee4,b=0x6afee0 主2:c=4,d=3 初始值3:e=5,f=6 change3:a=6,b=5 主3:e=6,f=5 //通过结果可以发现2和3有异曲同工之妙,但是我个人感觉3书写更加简单快捷
指针的改变:
using namespace std; void change2(int*,int*); int main() { int c=1,d=2; cout<<"初始值2:"<<"c="<<c<<",d="<<d<<endl; change2(&c,&d); cout<<"主2:"<<"c="<<c<<",d="<<d<<endl; //主2:c=2,d=2 } void change2(int* c,int* d) { * c=* c+ 1; d + = 1; cout<<"change2*:"<<"*c="<<*c<<",*d="<<*d<<endl; //change2*:*c=2,*d=2 cout<<"change2:"<<"c="<<c<<",d="<<d<<endl; //change2:c=0x6afeec,d=0x6afeec }
引用的改变:
#include <iostream> using namespace std; void change3(int&); int main() { int e=1; cout<<"初始值3:"<<"e="<<e<<endl; change3(e); cout<<"主3:"<<"e="<<e<<endl; //主3:e=2 } void change3(int& e) { e+=1; cout<<"change3:"<<"e="<<e<<endl; //change3:e=2 } //感觉引用很容易修改数据的值,name用const可以解决吗?Yes
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- C++学习笔记(三)-- 指针和引用
- C++学习笔记:C的继承与超越——指针与引用
- c++学习笔记1(指针和引用)
- C++ Data Structure 学习笔记 (2011.5.3)——传值,指针,引用的区别及Vector与String的详细用法
- C++学习笔记 c++引用(&)与指针(*)的区别
- VS2010 C++ 学习笔记(六) this指针 const 指针 引用
- C++学习笔记31,指向引用的指针(3)
- C/C++中关于地址、指针和引用变量的学习笔记(二) : 数组
- C++学习笔记(1)之传值、传指针、传引用的区别
- C++学习笔记31,指向引用的指针(3)
- C++学习笔记(13)——利用对象、引用、指针调用虚函数
- C/C++中关于地址、指针和引用变量的学习笔记(七) : sizeof和typedef
- (c/c++学习笔记九)引用传递、指针传递和值传递
- C/C++中关于地址、指针和引用变量的学习笔记(三) : 结构
- C++学习笔记(13)——利用对象、引用、指针调用虚函数
- c++学习笔记-------《c++自学通》第十二章 高级引用和指针
- C++学习笔记(第六章 指针的应用 字符串 引用 之二)
- C/C++中关于地址、指针和引用变量的学习笔记(六) : const和void
- c++学习笔记--指针和引用的比较