侵权投诉
订阅
纠错
加入自媒体

c++ 之布尔类型和引用的学习总结!

2020-06-22 15:28
TXP嵌入式
关注

5、引用的本质:

(1)引用在c++中的内部实现是一个指针常量,比如说说:

Type& name;

void fun(int& a)

a=8;

等价于:

Type* const name

void fun(int* const a)

*a=8;

(2)C++编译器在编译过程中用指针变量作为引用的内部实现,因此引用所占用的空间大小与指针相同(可以结合上面的那个例子仔细回忆和理解一下)。

(3)从使用的角度,引用只是一个别名,c++为了实用性而隐藏了引用的存储空间这一细节。

(4)c++中的引用大多数的情况下代替指针:

--功能性:可以满足多数需要使用指针的场合。

--安全性:可以避免由于指针操作不当而带来的内存错误。

--操作性:简单易用,又不失功能强大。

#include <stdio.h>

struct TRef

char* before;

char& ref;

char* after;

};

int main(int argc, char* argv[])

char a = 'a';

char& b = a;

char c = 'c';

TRef r = {&a, b, &c};

printf("sizeof(r) = %d", sizeof(r));

printf("sizeof(r.before) = %d", sizeof(r.before));

printf("sizeof(r.after) = %d", sizeof(r.after));

printf("&r.before = %p", &r.before);

printf("&r.after = %p", &r.after);

return 0;

演示结果:

@txp:/home/txp# ./a.out

sizeof(r) = 24

sizeof(r.before) = 8

sizeof(r.after) = 8

&r.before = 0x7ffdeacc7a00

&r.after = 0x7ffdeacc7a10

再来看一个函数返回引用示例:

#include <stdio.h>

int& func()

static int s = 0;

printf("func: s = %d", s);

return s;

int main(int argc, char* argv[])

int& rs = func();

printf("");

printf("main: rs = %d", rs);

printf("");

rs = 11;

func();

printf("");

printf("main: rs = %d", rs);

printf("");

return 0;

演示结果:

root@txp:/home/txp# ./a.out

func: s = 0

main: rs = 0

func: s = 11

main: rs = 11

三、总结:

1、bool的总结:

--bool类型是c++新添加的基础类型。

--bool类型的值只能是true和false。

--c++中的三目运算符可作为左值来使用。

2、引用:

--引用作为变量名而存在旨在代替指针。

--const引用可以使得变量具有可读属性。

--引用在编译器内部使用指针常量实现。

--引用的最终本质为指针。

--引用可以尽可能的避免内存错误。

<上一页  1  2  3  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

电子工程 猎头职位 更多
扫码关注公众号
OFweek电子工程网
获取更多精彩内容
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号