7.30-8.1 全数会2025(第六届)机器人及智能工厂展
火热报名中>>
c++ 之布尔类型和引用的学习总结!
2、引用的意义:
--引用作为变量名而存在,因此在一些场合可以代替指针。
--引用相对于指针来说具有更好的可读性和实用性。
下面举个经典的例子来对比一下:
(1)引用方式:
#include <stdio.h>
void swap(int& a,int& b)
{
int t = a;
a=b;
b=t;
}
int main(void)
{
int a =5;
int b =6;
printf("a=%d,b=%d",a,b);
swap(a,b);
printf("a=%d,b=%d",a,b);
return 0;
}
演示结果:
root@txp:/home/txp# ./a.out
a=5,b=6
a=6,b=5
(2)指针方式:
#include <stdio.h>
void swap(int *a,int *b)
{
int t =*a;
*a=*b;
*b=t;
}
int main(void)
{
int a =5;
int b =6;
printf("a=%d,b=%d",a,b);
swap(&a,&b);
printf("a=%d,b=%d",a,b);
return 0;
}
演示结果:
root@txp:/home/txp# ./a.out
a=5,b=6
a=6,b=5
3、特殊的引用:
--在c++中可以声明const引用。
--const Type& name =var;
--const 引用让变量拥有只读属性。
--当使用常量对const引用进行初始化时,C++编译器会为常量分配空间,并将引用名作为这段空间的别名:
int a = 4;
const int& b =a;
int *p=(int *)&b;
b=5;//错误,只读变量
*p=5;//修改a的值
下面来看一个示例:
#include <stdio.h>
void Example()
{
printf("Example:");
int a = 4;
const int& b = a;
int* p = (int*)&b;
//b = 5;
*p = 5;
printf("a = %d", a);
printf("b = %d", b);
}
int main(int argc, char *argv[])
{
Example();
printf("");
return 0;
}
演示结果:
root@txp:/home/txp# ./a.out
Example:
a = 5
b = 5
4、引用有自己的存储空间吗?
话不多说,看试验就知晓:
#include <stdio.h>
struct TRef
{
char& r;
};
int main(int argc, char *argv[])
{
char c = 'c';
char& rc = c;
printf("sizeof(char&) = %d", sizeof(char&));
printf("sizeof(rc) = %d", sizeof(rc));
printf("sizeof(TRef) = %d", sizeof(TRef));
printf("sizeof(ref.r) = %d", sizeof(ref.r));
return 0;
}
演示结果:
root@txp:/home/txp# ./a.out
sizeof(char&) = 1
sizeof(rc) = 1
sizeof(TRef) = 8
sizeof(ref.r) = 1
很明显有它的内存大小,下面就来看一下引用的本质。

图片新闻
技术文库
最新活动更多
-
3月27日立即报名>> 【工程师系列】汽车电子技术在线大会
-
4月1日立即下载>> 【村田汽车】汽车E/E架构革新中,新智能座舱挑战的解决方案
-
即日-4.22立即报名>> 【在线会议】汽车腐蚀及防护的多物理场仿真
-
4月23日立即报名>> 【在线会议】研华嵌入式核心优势,以Edge AI驱动机器视觉升级
-
4月25日立即报名>> 【线下论坛】新唐科技2025新品发布会
-
4月30日立即参与 >> 【白皮书】研华机器视觉项目召集令
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论