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
很明显有它的内存大小,下面就来看一下引用的本质。
图片新闻
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
11月29日立即预约>> 【上海线下】设计,易如反掌—Creo 11发布巡展
-
11月30日立即试用>> 【有奖试用】爱德克IDEC-九大王牌安全产品
-
即日-12.5立即观看>> 松下新能源中国布局:锂一次电池新品介绍
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论