指针与引用
C++中指针和引用的应用很常见,连着的使用极易混淆,但是区别很明显:
1. 指针是变量,而引用只是变量的一个别名,而且引用使得别名与引用对象绑在了一起。
2.指针初始化之后还可以指向其他变量,但是引用只能初始化一次。
3.sizeof 操作的结果不一样,引用为所指向变量的大小,指针则返回指针本身的大小。
4. 引用不可以为空,但是指针可以是空指针。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<cstdio> //引用的用法,引用就相当于给一个对象定义一个别名,作用在引用上的所有操作都与绑定的对象有关。 int main() { int val = 11, val2 = 33; int &refval = val, &refval2 = val2; ///引用必须要初始化,使其绑定到一个变量上 ///修改引用的值将改变其所绑定的变量的值 refval = -22; printf( "%d %d\n" , val, refval); //输出为-22,refval的值和val一样 refval = refval2; //引用一但初始化(绑定),将始终绑定到同一个特定对象上,无法绑定到另一个对象上 printf( "%d %d\n" , val, refval); //输出为33,33 return 0; } |
引用作为函数的参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<bits/stdc++.h> using namespace std; void swap( int &a, int &b) { int t; t=a; a=b; b=t; } int main() { int x,y; cin>>x>>y; swap(x,y); cout<<x<< " " <<y<<endl; } |
指针的引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include<bits/stdc++.h> using namespace std; void add1( int * &a) { (*a)++; } void add2( int * &a) { a++; } int main() { int *x; x= new int ; printf( "%x\n" ,x); scanf( "%d" ,x); add1(x); cout<<x<< " " <<*x<<endl; add2(x); cout<<x<< " " <<*x<<endl; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?